Я пытаюсь вычислить среднеквадратическую ошибку в квадрате из кадра данных pandas. Я проверил предыдущие ссылки на переполненный стоп, например Root mean square error in python и документацию по изучению scikit http://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html Я надеялся, что кто-то там прольет некоторый свет на то, что я делаю неправильно. Адрес dataset. Вот мой код.Поиск среднеквадратичной ошибки с Pandas dataframe
import pandas as pd
import numpy as np
sales = pd.read_csv("home_data.csv")
from sklearn.cross_validation import train_test_split
train_data,test_data = train_test_split(sales,train_size=0.8)
from sklearn.linear_model import LinearRegression
X = train_data[['sqft_living']]
y=train_data.price
#build the linear regression object
lm=LinearRegression()
# Train the model using the training sets
lm.fit(X,y)
#print the y intercept
print(lm.intercept_)
#print the coefficents
print(lm.coef_)
lm.predict(300)
from math import sqrt
from sklearn.metrics import mean_squared_error
y_true=train_data.price.loc[0:5,]
test_data=test_data[['price']].reset_index()
y_pred=test_data.price.loc[0:5,]
predicted =y_pred.as_matrix()
actual= y_true.as_matrix()
mean_squared_error(actual, predicted)
EDIT
Так это то, что работает для меня. Мне пришлось преобразовать значения тестового набора данных для жизни sqft из строки в столбец.
from sklearn.linear_model import LinearRegression
X = train_data[['sqft_living']]
y=train_data.price
#build the linear regression object
lm=LinearRegression()
# Train the model using the training sets
lm.fit(X,y)
Новый код
test_X = test_data.sqft_living.values
print(test_X)
print(np.shape(test_X))
print(len(test_X))
test_X = np.reshape(test_X, [4323, 1])
print(test_X)
from sklearn.metrics import mean_squared_error
from sklearn.metrics import explained_variance_score
MSE = mean_squared_error(y_true = test_data.price.values, y_pred = lm.predict(test_X))
MSE
MSE**(0.5)
1. train_data или test_data больше не являются фреймами данных pandas, они являются типами numpy.mdarray. – Zero
Ваш код ничего не предсказывает: вы просто разбиваете данные на две части, а затем сравниваете метки. Поскольку части имеют разные размеры, '' mean_squared_error'' не может их сравнивать. Не могли бы вы описать, что вы ожидаете от этого кода? – jakevdp
@jakevdp Я немного изменил свой код. Поэтому я создал модель линейной регрессии, основанную на данных обучения. И я хотел увидеть, насколько тесно данные теста предназначены для прогнозирования данных обучения. –