Обсуждение MachineLearning:Портал сообщества

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: Дорогие друзья, с помощью каких методов машинного обучения можно повысить коэффициент детерминации? ...)
 
(1 промежуточная версия не показана)
Строка 1: Строка 1:
Дорогие друзья, с помощью каких методов машинного обучения можно повысить коэффициент детерминации? Выше, чем 0,54 не выходит у меня.
Дорогие друзья, с помощью каких методов машинного обучения можно повысить коэффициент детерминации? Выше, чем 0,54 не выходит у меня.
 +
Код листинга приведен ниже.
 +
<!-- Комментарий -->
from load import load_dataset
from load import load_dataset
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
Строка 17: Строка 19:
model = ElasticNetCV()
model = ElasticNetCV()
-
column_names = ["sex", "length", "diameter", "height", "whole weight",
+
column_names = ["sex", «length», «diameter», «height», «whole weight»,
"shucked weight", "viscera weight", "shell weight", "rings"]
"shucked weight", "viscera weight", "shell weight", "rings"]
-
data = pd.read_csv("C:/Users/RATpr/Desktop/Abalone.tsv", names=column_names)
+
data = pd.read_csv(«C:/Users/RATpr/Desktop/Abalone.tsv», names=column_names)
y=data.rings.values
y=data.rings.values
-
for label in "MFI":
+
for label in «MFI»:
data[label] = data["sex"] == label
data[label] = data["sex"] == label
del data["sex"]
del data["sex"]
-
del data["rings"]
+
del data["rings"]
X = data.values.astype(np.float)
X = data.values.astype(np.float)
train_X, test_X, train_y, test_y = cross_validation.train_test_split(X, y)#делаем тестовые данные и обучающие
train_X, test_X, train_y, test_y = cross_validation.train_test_split(X, y)#делаем тестовые данные и обучающие
Строка 31: Строка 33:
predicted_train_y = model.predict(train_X)
predicted_train_y = model.predict(train_X)
r1 = r2_score (test_y, predicted_test_y)
r1 = r2_score (test_y, predicted_test_y)
-
print ("Коэффициент детерменации (на тестовых данных): {:.2} " . format(r1 ))
+
print ("Коэффициент детерменации (на тестовых данных): {:.2} " . format(r1))
r2 = r2_score (train_y, predicted_train_y)
r2 = r2_score (train_y, predicted_train_y)
-
print ("Коэффициент детерменации (на обучающих данных): {:.2} " . format(r2 ))
+
print ("Коэффициент детерменации (на обучающих данных): {:.2} " . format(r2))
р = model.predict (X)
р = model.predict (X)
-
plt.scatter ( test_y, predicted_test_y )
+
plt.scatter (test_y, predicted_test_y)
-
plt.xlabel ( ' Число колец предсказанных ' )
+
plt.xlabel (' Число колец предсказанных ')
-
plt.ylabel ( ' Число колец по факту ' )
+
plt.ylabel (' Число колец по факту ')
-
plt.plot ( [ y.min(), y.max() ] , [ [y.min() ] , [y.max()]])
+
plt.plot ([ y.min(), y.max() ], [ [y.min() ], [y.max()]])
-
#перекрестная проверка
+
# перекрестная проверка
-
kf=KFold(len(y),n_folds=5)
+
kf=KFold(len(y), n_folds=5)
p=np.zeros_like(y)
p=np.zeros_like(y)
-
for train,test in kf:
+
for train, test in kf:
model.fit(X[train],y[train])
model.fit(X[train],y[train])
p[test]=model.predict(X[test])
p[test]=model.predict(X[test])
-
rmse_cv=np.sqrt(mean_squared_error(p,y))
+
rmse_cv=np.sqrt(mean_squared_error(p, y))
print("Оценка перекрестной проверки:{:f} ".format(rmse_cv))
print("Оценка перекрестной проверки:{:f} ".format(rmse_cv))
 +
<!-- Комментарий -->

Текущая версия

Дорогие друзья, с помощью каких методов машинного обучения можно повысить коэффициент детерминации? Выше, чем 0,54 не выходит у меня. Код листинга приведен ниже.

from load import load_dataset import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn import cross_validation from sklearn.metrics import r2_score from sklearn.linear_model import LinearRegression, Lasso,Ridge,ElasticNetCV from sklearn.cross_validation import KFold from sklearn.metrics import mean_squared_error from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import mutual_info_regression from sklearn.tree import DecisionTreeRegressor from sklearn.ensemble import RandomForestRegressor from sklearn.grid_search import RandomizedSearchCV

model = ElasticNetCV() column_names = ["sex", «length», «diameter», «height», «whole weight»,

               "shucked weight", "viscera weight", "shell weight", "rings"]

data = pd.read_csv(«C:/Users/RATpr/Desktop/Abalone.tsv», names=column_names) y=data.rings.values for label in «MFI»:

   data[label] = data["sex"] == label

del data["sex"] del data["rings"] X = data.values.astype(np.float) train_X, test_X, train_y, test_y = cross_validation.train_test_split(X, y)#делаем тестовые данные и обучающие model.fit(train_X,train_y) predicted_test_y = model.predict(test_X) predicted_train_y = model.predict(train_X) r1 = r2_score (test_y, predicted_test_y) print ("Коэффициент детерменации (на тестовых данных): {:.2} " . format(r1)) r2 = r2_score (train_y, predicted_train_y) print ("Коэффициент детерменации (на обучающих данных): {:.2} " . format(r2))

р = model.predict (X) plt.scatter (test_y, predicted_test_y) plt.xlabel (' Число колец предсказанных ') plt.ylabel (' Число колец по факту ') plt.plot ([ y.min(), y.max() ], [ [y.min() ], [y.max()]])

  1. перекрестная проверка

kf=KFold(len(y), n_folds=5) p=np.zeros_like(y) for train, test in kf:

   model.fit(X[train],y[train])
   p[test]=model.predict(X[test])

rmse_cv=np.sqrt(mean_squared_error(p, y)) print("Оценка перекрестной проверки:{:f} ".format(rmse_cv))

Личные инструменты