Модель DecisionTree имеет нулевую точность - PullRequest
0 голосов
/ 26 мая 2019

Модель поезда на базовый набор данных (2-й массив 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]"

вместоof 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 голосов
/ 31 мая 2019

Используйте дерево классификации, когда вам дали дискретные метки, и используйте дерево регрессии, когда вам дали непрерывные значения, как в этом случае.

...