kaggleのデータセット「income > 50k」を使って予測に挑戦

# income > 50k

今回はKaggle内のデータ「income > 50k」を使用して予測モデルを作成しました。
これは年収推定のモデルを作成できるデータセットのようで、今回はLinearSVCでチャレンジしてみたいと思います。


```python
#ライブラリのインポート
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
```

```python
#データの読み込み
train = pd.read_csv("/kaggle/input/income/train.csv")
test = pd.read_csv("/kaggle/input/income/test.csv")
```

```python
#学習データの先頭５行出力
train.head()
```

![スクリーンショット 2023-03-04 17.47.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/b179b916-d808-383b-7fcf-366fd40feb1b.png)

```python
#データタイプの確認などのデータ全体像の把握
train.info()
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/c4b25db1-4af4-e449-86c9-0f5563913a38.png"width=50%>

```python
#テストデータの全体確認
test
```
![スクリーンショット 2023-03-04 18.16.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/58861436-f02b-4a23-92d5-572858379ad5.png)


```python
#年齢別にデータの可視化
flg = sns.FacetGrid(train_df, col="income_>50K", hue="income_>50K", height=4)
flg.map(sns.histplot, "age", bins=30, kde=False)
````

![スクリーンショット 2023-03-04 18.01.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/71620b92-ae42-e1a0-4125-9444be4672d4.png)

```python
#キー”education”のデータを可視化
plt.figure(figsize=(20,10))
sns.countplot(x="education", hue="income_>50K", data=train_df) 
```

![スクリーンショット 2023-03-04 18.02.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/36e7c217-90f9-69b3-db34-8ed8e3bc62a3.png)

```python
#"marital-status"を可視化
plt.figure(figsize=(20,10))
sns.countplot(x="marital-status", hue="income_>50K", data=train_df)
```

![スクリーンショット 2023-03-04 18.03.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/31fd46a6-bd41-2315-6016-981718afcc25.png)

```python
#"gender"を可視化
sns.countplot(x="gender", hue="income_>50K", data=train_df)
```

![スクリーンショット 2023-03-04 18.04.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/799cde7b-ee19-1fa8-d2cf-7c166ee84468.png)

```python
#"capital-gain"を可視化
flg = sns.FacetGrid(train_df, col="income_>50K", hue="income_>50K", height=4)
flg.map(sns.histplot, "capital-gain", bins=30, kde=False)
```

![スクリーンショット 2023-03-04 18.05.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/63e4c2e3-3488-8036-0730-d7127cc3bf17.png)

```python
#不要と思われるカラムの削除
train_df = train.drop(["fnlwgt", "educational-num", "occupation", "race", "hours-per-week", "relationship", "workclass",
                    "native-country"], axis=1)
```

```python
#欠損値の確認
train_df.isnull().sum()
```

![スクリーンショット 2023-03-04 18.06.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/93d665ba-8c35-74a4-aeb5-4552970c853a.png)

```python
#加工したデータのデータタイプを再確認
train_df.info()
```

![スクリーンショット 2023-03-04 18.06.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/db32f3ed-9d94-7ac5-174c-70744abfeeb2.png)

```python
#ワンホットエンコーディング
train_df = pd.get_dummies(train_df, columns=["education", "marital-status",
                                            "gender"])
```

```python
#オブジェクト型のデータが数値データになっているのを確認
train_df
```

![スクリーンショット 2023-03-04 18.08.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/e2c01d9f-47b8-dbf5-48ed-167f36c094f7.png)

```python
#モデルのインポート
from sklearn.svm import LinearSVC
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(train_df.drop(["income_>50K"], axis=1),  train_df["income_>50K"], test_size=0.2, random_state=42)
```

```python
#モデルに学習、予測結果を表示
model = LinearSVC()
model.fit(X_train, y_train)
pred = model.predict(X_test)
acc = accuracy_score(y_test, pred) * 100

print(pred)
print(acc)
```
![スクリーンショット 2023-03-04 18.10.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3124100/3be8ebf7-c7eb-48c2-fc2f-197402503e97.png)

結果は「80.9％」の予測精度となりました。
可視化作業には　seabornを初めて使ったのですが、直感的で分かりやすいコーディングで大変便利さを感じました。

もっと技術をつける必要性を感じましたので毎日学習・研鑽を頑張っていこうと思います。
読んでくださってありがとうございました。