Модель поезда на базовый набор данных (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!