IT Learning

実践形式でITのお勉強

Python

【Python】K-NNによる分類モデル

投稿日:2021年1月23日 更新日:

概要

Pythonの機械学習用ライブラリといえばscikit-learnです。

今回はこのscikit-learnのなかでも分類問題に使用することができるK-NNのクラスを使用して分類問題を行う方法について簡単に紹介します。

使用するデータ

データ分析などのコンペなどで有名なKaggleですが、フリーで使用できるデータセットがいくつか掲載されています。

今回はこのKaggleの中でOpen Database Licenseとして利用可能な以下のをデータを使用してやってみます。

ネット広告と購買実績の関係のデータ

https://www.kaggle.com/dragonheir/logistic-regression?select=Social_Network_Ads.csv

License : https://opendatacommons.org/licenses/odbl/1-0/

ソースコード

実際の分類問題のソースコードは以下になります。

# ライブラリのインポート
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler

# データセットの読み込み
df = pd.read_csv("Social_Network_Ads.csv")

# ラベルエンコーディング処理
le=LabelEncoder()
df['Gender']=le.fit(df['Gender']).transform(df['Gender'])

# 正規化
scaler = MinMaxScaler()
df.loc[:,:]  = scaler.fit_transform(df)
df.head()

# 特徴量と目的変数の選定
X = df[["Gender","Age", "EstimatedSalary"]]
y  = df["Purchased"]

# テストデータ分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# KNNのインスタンス定義
knn = KNeighborsClassifier(n_neighbors=6)

# モデルfit
knn.fit(X,y)

#スコア計算
score = format(knn.score(X_test, y_test))
print('正解率:', score)

正解率: 0.9375

勉強になったこと

最初正解率が低めだったが、正規化したらいい感じの正解率が出るようになった。

Related

-Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です