Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2017 14:32:55

kordDem
Зарегистрирован: 2017-05-18
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Регрессия, ошибка.

Добрый день. Недавно столкнулся с задачей регрессии. Написал 2 варианта программы(ну мало ли мб ошибся), но при итоговом сравнении тех результатов, которые должны получится и полученных с помощью регрессии у меня проценты какие-то жуткие получаются.
Примеры программ

 import pandas as pd
import xgboost as xgb
from sklearn.metrics import confusion_matrix, mean_squared_error
from sklearn.metrics import mean_absolute_error,mean_squared_error,median_absolute_error
df = pd.read_csv('zab_work2.csv',";",header=None)
X_train = df.drop(17,axis=1)
Y_train = df[17]
T_train_xgb = xgb.DMatrix(X_train, Y_train)
 
params = {"objective": "reg:linear", "booster":"gblinear"}
gbm = xgb.train(dtrain=T_train_xgb,params=params)
test_data = pd.read_csv('new_work2.csv',";",header=None)
print(test_data)
X_test = test_data.drop(17,axis=1)
Y_test = test_data[17]
Y_pred = gbm.predict(xgb.DMatrix(X_test))
test_erorr = mean_squared_error(Y_test,Y_pred);
print("Accuracy: %.2f%%" % (test_erorr * 100.0))    
accuracy = mean_absolute_error(Y_test,Y_pred)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
accuracy2 = median_absolute_error(Y_test, Y_pred)
print("Accuracy: %.2f%%" % (accuracy2 * 100.0))
 import numpy
import sklearn
import xgboost as xgb
from sklearn.metrics import confusion_matrix, mean_squared_error
dataset = numpy.genfromtxt('zab_work2.csv', delimiter=";")
dataset2 = numpy.genfromtxt('new_work2.csv', delimiter=";")
# split data into X and y
X = dataset[:,[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]]
Y = dataset[:,[17]]
T_train_xgb = xgb.DMatrix(X, Y)
x_2 = dataset2[:,[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]]
y_2 = dataset2[:,[17]]
 
params = {"objective": "reg:linear", "booster":"gblinear"}
gbm = xgb.train(dtrain=T_train_xgb,params=params)
Y_pred = gbm.predict(xgb.DMatrix(x_2))
test_erorr = mean_squared_error(y_2,Y_pred);
print("Accuracy: %.2f%%" % (test_erorr * 100.0))    
accuracy = mean_absolute_error(y_2,Y_pred)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
accuracy2 = median_absolute_error(y_2,Y_pred)
print("Accuracy: %.2f%%" % (accuracy2 * 100.0))
В первом случае я получаю:
Accuracy: 2136783951368866816.00%
Accuracy: 1569996353.79%
Accuracy: 384559.79%
Во-втором:
Accuracy: 14028999965613744.00%
Accuracy: 1159296761.36%
Accuracy: 1160740900.00%

Бред же, а не результаты. Мб я где-то что-то не правильно считаю?
Файлы очень большие приложить не могу, но структура одинаковая
18 столбцов. По 1-17 - признаков, 18-ый - результат.

Отредактировано kordDem (Май 18, 2017 15:05:44)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version