F 11 Scikit-Learnによる機械学習
16582 ワード
💡 機械学習タイプ
💡 同期タスク
写真の出所:http://https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
💡 中間チャネルキーモジュール
📌 データひょうげん
Sikit Runではnumpyの標準、PandasのDataFrame、およびScipyのSparse行列で表すことができます.
2つの典型的な表現
これは、
これは、
📌 回帰モデル実習
import numpy as np
import matplotlib.pyplot as plt
r = np.random.RandomState(10)
x = 10 * r.rand(100)
y = 2 * x - 3 * r.rand(100)
plt.scatter(x,y)
マシンラーニングモデルを使用するモデルオブジェクトを作成します.
from sklearn.linear_model import LinearRegression
model = LinearRegression()
ここで、入力データxをfit()メソッドに直接入れるとエラーが発生します.xの形状は(100,),1次元ベクトルであるからである.マトリクス形式の入力データと1次元ベクトル形状のラベルを追加する必要があります.
X = x.reshape(100,1)
model.fit(X,y)
新しいデータを追加して予測します.np.linspace()を使用して生成します.x_new = np.linspace(-1, 11, 100)
X_new = x_new.reshape(100,1)
y_new = model.predict(X_new)
plt.scatter(x, y, label='input data')
plt.plot(X_new, y_new, color='red', label='regression line')
📌 データセットモジュール
Toy datasetの例
datasets.load wine()ブラウズ
input :
from sklearn.datasets import load_wine
data = load_wine()
type(data)
output :sklearn.utils.Bunch
ここで、BranchはPythonのディックシャナ形式に類似したデータ型である.input :
print(data.keys())
ouput :dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names'])
💡 トレーニングデータとテストデータを分離
📌 データを直接切断
通常、トレーニングデータとテストデータの比率は8:2です.
検証データがある場合はtrain,validation,testをそれぞれ6:2:2に分割する.
from sklearn.datasets import load_wine
data = load_wine()
print(data.data.shape)
print(data.target.shape)
(178, 13)
(178,)
総データ量は178個で,テストデータを8:2の割合で分割した.train 142個のテストは36個に分けられた.
X_train = data.data[:142]
X_test = data.data[142:]
y_train = data.target[:142]
y_test = data.target[142:]
訓練データとテストデータは分離され、訓練と予測が再開された.from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
精度を評価すると、from sklearn.metrics import accuracy_score
print("정답률=", accuracy_score(y_test, y_pred))
output : 정답률= 0.9444444444444444
📌 train test split()を使用して分離
Sikittrunはtrainデータとtestデータを分離するAPI機能を提供する.
from sklearn.model_selection import train_test_split
result = train_test_split(X, y, test_size=0.2, random_state=42)
print(result[0].shape)
print(result[1].shape)
print(result[2].shape)
print(result[3].shape)
(142, 13)
(36, 13)
(142,)
(36,)
0番目の要素から順に、列車データ特性行列、試験データ特性行列、列車データ目標ベクトル、試験データ目標ベクトルである.一般ユーザーは以下のフリーパッケージを使用します.from sklearn.model_selection import train_test_split
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
data = load_wine()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=11)
model = RandomForestClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print("정답률=", accuracy_score(y_test, y_pred))
Reference
この問題について(F 11 Scikit-Learnによる機械学習), 我々は、より多くの情報をここで見つけました https://velog.io/@ja2y5ung/Scikit-Learn으로-구현해-보는-머신러닝テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol