我对机器学习完全是新手,目前正在玩MNIST机器学习,使用RandomForestClassifier进行分类。
我使用了sklearn和panda。我有一个用于训练的CSV数据集。
import pandas as pdimport numpy as npfrom sklearn import model_selectionfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.svm import LinearSVCfrom sklearn.linear_model import SGDClassifierfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.metrics import accuracy_scoretrain = pd.read_csv("train.csv")features = train.columns[1:]X = train[features]y = train['label']user_train = pd.read_csv("input.csv")user_features = user_train.columns[1:]y_train = user_train[user_features]user_y = user_train['label']X_train, X_test, y_train, y_test = model_selection.train_test_split(X/255.,y,test_size=1,random_state=0)clf_rf = RandomForestClassifier()clf_rf.fit(X_train, y_train)y_pred_rf = clf_rf.predict(X_test)acc_rf = accuracy_score(y_test, y_pred_rf)print("pred : ", y_pred_rf)print("random forest accuracy: ",acc_rf)
我目前的代码运行良好。它会将训练集分开并取一个元素用于测试,然后进行预测。
现在我想使用来自输入的数据进行测试,我有一个新的csv文件名为“input.csv”,我想预测这个csv文件中的值。
我怎样才能用我的输入数据替换model_selection.train_test_split?我确信答案很明显,但我没找到任何相关信息。
回答:
你的代码的以下部分未被使用
user_train = pd.read_csv("input.csv")user_features = user_train.columns[1:]y_train = user_train[user_features]user_y = user_train['label']
如果input.csv与train.csv具有相同的结构,你可以考虑以下操作:
-
在input.csv数据集的分割上训练并测试分类器:(请参考http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html了解如何设置测试大小)
input_train = pd.read_csv("input.csv") input_features = user_train.columns[1:] input_data = user_train[input_features] input_labels = user_train['label']data_train, data_test, labels_train, labels_test = model_selection.train_test_split(input_data/255.,input_labels,test_size=1,random_state=0)clf_rf = RandomForestClassifier()clf_rf.fit(data_train, labels_train)labels_pred_rf = clf_rf.predict(data_test)acc_rf = accuracy_score(labels_test, labels_pred_rf)
-
在整个input.csv文件上测试之前训练的分类器
input_train = pd.read_csv("input.csv") input_features = user_train.columns[1:] input_data = user_train[input_features] input_labels = user_train['label']labels_pred_rf = clf_rf.predict(input_data)acc_rf = accuracy_score(input_labels, labels_pred_rf)