分类算法-决策树

时间:2018-07-04 09:50:10

标签: python-3.x machine-learning scikit-learn classification decision-tree

我有从感应电动机收集的MPU6050加速度计数据。我想训练一种算法,并使用新的数据集进行预测。

我已经使用决策树分类器对算法进行了训练,并获得了100%的分数并进行了测试

当我尝试为该模型提供新的数据集时,分类没有正确完成。我在代码末尾给出了示例。

请在下面找到代码:

import pandas as pd
import numpy
import pickle
from pandas.tools.plotting import scatter_matrix
from matplotlib import cm

filename=pd.read_csv("C:/Users/Meena/Desktop/Datawithlabel.txt", sep=',')
filename.columns = ["x", "y", "z","Label"]

feature_names=['x']
X=filename[feature_names]
y=filename['Label']


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=7)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()

X_train = scaler.fit_transform(X_train)


from sklearn.tree import DecisionTreeClassifier

clf = DecisionTreeClassifier().fit(X_train, y_train)


print('Accuracy of Decision Tree classifier on training set: {:.2f}'
     .format(clf.score(X_train, y_train)))
  

决策树分类器对训练集的准确性:1.00

Filename='final_model.sav'
pickle.dump(clf,open(Filename,'wb'))
load_model=pickle.load(open(Filename,'rb'))
result=load_model.score(X_test,y_test)
print(result)
  

0.9393939393939394

load_model=pickle.load(open(Filename,'rb'))

filename1=pd.read_csv("C:/Users/Meena/Desktop/Motor2withloadsafter5min.txt", sep=',')
filename1.columns = ["x", "y", "z"]
Datatopredict=filename1[['x']]

prediction = load_model.predict(Datatopredict)

print(prediction)

即使对于这些值,它在训练集中作为非工人阶级给出,但在预测中仍会作为工人阶级产生。我不确定哪里出了问题...

在下面的数据中,第一列是索引,第二列是来自加速度计的X轴数据

590  0.03
591  0.03
592  0.02
593  0.02
594  0.01
595  0.04
596  0.12
597  0.12
598  0.11
599  0.14
  

[“工作”“工作”“工作”“工作”“工作”“工作”“工作”    '工作''工作''工作']

This is the screenshot of the training data

1 个答案:

答案 0 :(得分:1)

除了上面的评论外,我注意到的一件事是您没有扩展测试值。

您还需要在X_test上使用相同的缩放器,例如:X_test = scaler.transform(X_test)在预测之前。因此,也要腌制scaler并在测试期间加载它。 训练期间:

Filename = 'final_model.sav'
pickle.dump(clf, open(Filename, 'wb'))

scaler_Filename = 'final_scalar.sav'
pickle.dump(scaler, open(scaler_Filename, 'wb'))

在测试期间:

load_scaler = pickle.load(open(scaler_Filename,'rb'))
X_test = load_scaler.transform(X_test)

load_model = pickle.load(open(Filename,'rb'))
result = load_model.score(X_test,y_test)

print(result)

关于新数据:

Datatopredict = load_scaler.transform(Datatopredict)
prediction = load_model.predict(Datatopredict)