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!
答案 0 :(得分:0)
在获得离散标签的情况下使用分类树,在获得连续值的情况下使用回归树。