pythonの機械学習のソースコードを理解したいです
Q&A
Closed
解決したいこと
pythonの機械学習のソースコードを理解したいです
本を読んで機械学習の勉強をしているのですが、どうしても分からない部分があるので質問させていただきました。
参考Git
https://github.com/kujirahand/book-mlearn-gyomu/tree/master/src/ch2/wine
該当するソースコード
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
# データを読み込む --- (*1)
wine = pd.read_csv("winequality-white.csv", sep=";", encoding="utf-8")
# データをラベルとデータに分離
y = wine["quality"]
x = wine.drop("quality", axis=1)
print(y)
# yのラベルをつけ直す --- (*2)
# newlist = []
# for v in list(y):
# if v <= 4:
# newlist += [0]
# elif v <= 7:
# newlist += [1]
# else:
# newlist += [2]
# y = newlist
# print(newlist)
# 学習用とテスト用に分割する --- (*3)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
# 学習する --- (*4)
model = RandomForestClassifier()
model.fit(x_train, y_train)
# 評価する --- (*5)
y_pred = model.predict(x_test)
print(classification_report(y_test, y_pred))
print("正解率=", accuracy_score(y_test, y_pred))
質問1
「コメントアウトしているyのラベルをつけ直す --- (*2)を実行すると、正解率が上がるのですがなぜでしょうか?変更後は0, 1, 2の三種類に分けているのはわかるのですが、なぜQualityの種類が多いと正解率が格段に下がってしますのかを理解できていません」
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
質問2
「上記のコードで4つの変数をどのように分類しているかがいまいち理解できません。この書き方をすればテスト用のx, yを20パーセント分けられて残りの80%は自動的にトレーニング用のx, yに分類される理解であっていますか?train_size=0.8は省略されているだけでしょうか?」
よろしくお願いします。