いくつかの分類モデルトレーニングirisデータセット
10130 ワード
いくつかの一般的な分類アルゴリズムを用いてirisデータを訓練し,利K折交差検証法を用いて評価した.
K折交差検証:sklearn.model_selection.KFold(n_splits=k, shuffle=False, random_state=None)
構想:トレーニング/テストデータセットをn_に分割するsplits個の反発サブセット、毎回そのうちの1つのサブセットを検証セットとして使用し、残りのn_splits-1個をトレーニングセットとしてn_splits次訓練とテスト、n_を得るsplits個の結果
パラメータの説明:n_splits:shuffleをいくつか等分することを表します:区分するたびに、トランプをするかどうか①Falsesの場合、その効果はrandom_に等しいですstateは整数に等しく、区分ごとの結果が同じ②Trueの場合、区分ごとの結果が異なり、シャッフルを経てランダムにサンプリングされたrandom_を示すstate:ランダムシード数
データセット:iris(この例ではローカルファイルから取得)
コード#コード#
K折交差検証:sklearn.model_selection.KFold(n_splits=k, shuffle=False, random_state=None)
構想:トレーニング/テストデータセットをn_に分割するsplits個の反発サブセット、毎回そのうちの1つのサブセットを検証セットとして使用し、残りのn_splits-1個をトレーニングセットとしてn_splits次訓練とテスト、n_を得るsplits個の結果
パラメータの説明:n_splits:shuffleをいくつか等分することを表します:区分するたびに、トランプをするかどうか①Falsesの場合、その効果はrandom_に等しいですstateは整数に等しく、区分ごとの結果が同じ②Trueの場合、区分ごとの結果が異なり、シャッフルを経てランダムにサンプリングされたrandom_を示すstate:ランダムシード数
データセット:iris(この例ではローカルファイルから取得)
コード#コード#
import pandas as pd
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.model_selection import KFold
from sklearn import tree
from sklearn import naive_bayes
from sklearn import svm
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.neural_network import MLPClassifier
#
data = pd.read_csv('iris.csv',header=None)
data.columns = [" "," "," "," ","category"]
X = data.iloc[:,0:4]
Y = data.iloc[:,4]
k = 10
kf = KFold(n_splits=k, shuffle=True)
def eval_model(model_name,model):
accuracies = []
i=0
for train_index, test_index in kf.split(data): #
x_train, x_test = X.loc[train_index] ,X.loc[test_index]
y_train, y_test = Y.loc[train_index] ,Y.loc[test_index]
model.fit(x_train,y_train) #
y_predict = model.predict(x_test) #
accuracy = accuracy_score(y_pred=y_predict,y_true=y_test) #
accuracies.append(accuracy)
i+=1
print(' {} : {}'.format(i,accuracy))
print(model_name+" : ",np.mean(accuracies))
models={
'decision tree':lambda:tree.DecisionTreeClassifier(),
'random forest':lambda:RandomForestClassifier(n_estimators=100),
'naive bayes':lambda:naive_bayes.GaussianNB(),
'svm':lambda:svm.SVC(gamma='scale'),
'GBDT':lambda:GradientBoostingClassifier(),
'MLP':lambda:MLPClassifier(max_iter=1000),
}
for name,m in models.items():
eval_model(name,m())