DecisionTree模型具有零精度

时间:2019-05-26 09:51:19

标签: python-3.x decision-tree

basic dataset 上的训练模型(二维数组Hours_Studied和Test_Grade) 并有一些预测,但是当我尝试计算precision_score时,它始终为0.0

我想问题出在分割后是我的阵列形状

import pandas as pd
import numpy as np

df = pd.read_csv('c:/Rawdata/grade2.csv', header=0)

print ('Raw Dataset Lenght:', len(df))
print ('Raw Dataset Shape:', df.shape)
# raw dataset info output is "Raw Dataset Lenght: 9" and "Raw Dataset Shape: (9, 2)"

from sklearn.model_selection import train_test_split

X = np.array(df['Hours_Studied']).reshape(-1, 1)
y = df['Test_Grade']

print ('Processed Dataset shape', X.shape, y.shape)
# Processed dataset output is "(9, 1) (9,)"
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=100)

代替此

from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(criterion = 'entropy', random_state=100)

新代码

from sklearn.tree import DecisionTreeRegressor
tree = DecisionTreeRegressor(random_state=100)

这里没有变化

tree.fit(X_train, y_train)
tree_pred = tree.predict(X_test)
print ('tree predicted array is', tree_pred)
# output is "[57 96 79]"

代替了precision_score

from sklearn.metrics import accuracy_score

使用这个

from sklearn.metrics import r2_score

print('current y_test is ', '\n', y_test)
#output is  
# 1    66
#6    91
#5    81
#Name: Test_Grade, dtype: int64

代替此

print('Accuracy tree is', accuracy_score(y_test, tree_pred))
# output is "Accuracy tree is 0.0"

现在我们有

print('Accuracy tree is', r2_score(y_test, tree_pred)*100)
# output is "Accuracy tree is 65.26315789473685"

解决了零精度问题,Thx!

1 个答案:

答案 0 :(得分:0)

在获得离散标签的情况下使用分类树,在获得连续值的情况下使用回归树。