Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 分类算法-决策树_Python 3.x_Machine Learning_Scikit Learn_Classification_Decision Tree - Fatal编程技术网

Python 3.x 分类算法-决策树

Python 3.x 分类算法-决策树,python-3.x,machine-learning,scikit-learn,classification,decision-tree,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

我有从感应电机收集的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

0.9394

即使这些值在训练集中作为非工人阶级给出,在预测中仍然作为工人阶级给出。我不知道哪里出了问题

在下面的数据中,第一列是索引,第二列是来自加速计的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
[“工作”“工作”“工作”“工作”“工作”“工作”“工作”“工作” “正在工作”“正在工作”“正在工作”]


除了上面的评论之外,我还注意到一件事,就是您没有缩放测试值

在X_测试中也需要使用相同的定标器,例如:
X_测试=scaler.transform(X_测试)
,然后再进行预测。因此,也要对
定标器进行pickle处理,并在测试期间加载它。
培训期间:

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)

请更详细地解释你在说什么。您所说的“代码”是什么意思?即使这些值在培训集中作为非工人阶级给出,在预测中仍然作为工人阶级产生“
?相同值的预测是否不同。你能分享训练数据吗?训练数据集太大,我无法分享。但是检查我附加的新屏幕截图,其中值[596-599]的类被分类为非工作,但是预测的结果将它们分类为工作,当我尝试按u所说的进行缩放时,我收到以下错误:-------------------------------------------------------------AttributeError回溯(最近一次调用)在()3 4 load\u model=pickle.load(open(Filename,'rb'))->5 result=load\u model.score(X\u测试,y\u测试)6 7打印(result)AttributeError:“MinMaxScaler”对象没有相同的属性“score”[-------------------------------------------------------------AttributeError回溯(最近一次调用)在()3 4 load_model=pickle.load(打开(文件名,'rb')----->5 result=load_model.score(X_测试,y_测试)6 7打印(结果)AttributeError:'MinMaxScaler'对象没有属性'score']@MeenakshiChowdhary请立即尝试。是否有方法可以打印新输入及其相应的预测类?
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)