Обсуждение 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", | + | 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( | + | data = pd.read_csv(«C:/Users/RATpr/Desktop/Abalone.tsv», names=column_names) |
y=data.rings.values | y=data.rings.values | ||
- | for label in | + | 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()]])
- перекрестная проверка
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))