簡體   English   中英

如何使用三個自變量擬合線性回歸模型並使用sklearn計算均方誤差?

[英]How to fit a linear regression model using three independent variables and calculate the mean squared error using sklearn?

我正在嘗試使用三個自變量擬合線性回歸模型,並使用sklearn計算均方誤差,但我似乎無法做到正確。

我的數據是波士頓住房,三個獨立變量如下:1。CRIM(城鎮人均犯罪率)2。RM(每個住宅的平均房間數)3。PTRATIO(城鎮的學生 - 教師比率)

適合型號:

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import sklearn
lm = LinearRegression()
lm.fit(X[['CRIM']['RM'], ['PTRATIO']], boston_df.PRICE)

計算均方誤差

from sklearn.metrics import mean_squared_error
y_true = ['CRIM', 'RM', 'PTRATIO']
y_pred = ['PRICE']
mean_squared_error(y_true, y_pred)

任何建議或提示都非常感謝!

嘗試X[['CRIM', 'RM', 'PRTATIO']]而不是X[['CRIM']['RM'], ['PTRATIO']]來擬合模型

對於預測,您需要比較這兩個向量:

y_true = boston_df.PRICE
y_pred = lm.predict(X[['CRIM', 'RM', 'PRTATIO']])
mean_squared_error(y_true, y_pred)

基本上你的y_pred應該是模型中的預測值,在這種情況下是lm

sklearn有很棒的文檔。 這是一個完整的示例數據集的完整示例: http//scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html

您遇到的最大問題是您的數據集。 就像你的代碼一樣:

y_true = ['CRIM', 'RM', 'PTRATIO']
y_pred = ['PRICE']

這甚至不是真正的數據,它只是2個字符串標簽列表,所以當然這不起作用:

mean_squared_error(y_true, y_pred)

從我發布的示例中,您可以嘗試這個“hello world”類型代碼(使用現有數據集)只是為了確保您使代碼正常工作,然后您需要做的就是用您自己的數據替換數據集。 正如您所看到的,大多數代碼專用於准備數據,因此它將正確加載到線性回歸函數中:

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model

# Load the diabetes dataset
diabetes = datasets.load_diabetes()

# Use only one feature
diabetes_X = diabetes.data[:, np.newaxis, 2]

# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]

# Create linear regression object
regr = linear_model.LinearRegression()

# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)

print("Mean squared error: %.2f" % np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM