第1关:简单线性回归与多元线性回归
本关任务:根据本节课所学知识完成本关所设置的选择题。
第2关:线性回归的正规方程解
本关任务:根据本关卡所学知识,构建线性回归算法,并利用波斯顿房价数据对模型进行训练,然后对未知的房价数据进行预测。
#encoding=utf8
import numpy as np
def mse_score(y_predict,y_test):
'''
input:y_predict(ndarray):预测值
y_test(ndarray):真实值
ouput:mse(float):mse损失函数值
'''
#********* Begin *********#
mse = np.mean(y_predict-y_test)
#********* End *********#
return mse
class LinearRegression :
def __init__(self):
'''初始化线性回归模型'''
self.theta = None
def fit_normal(self,train_data,train_label):
'''
input:train_data(ndarray):训练样本
train_label(ndarray):训练标签
'''
#********* Begin *********#
x = np.hstack([np.ones((len(train_data),1)),train_data])
self.theta =np.linalg.inv(x.T.dot(x)).dot(x.T).dot(train_label)
#********* End *********#
return self.theta
def predict(self,test_data):
'''
input:test_data(ndarray):测试样本
'''
#********* Begin *********#
x = np.hstack([np.ones((len(test_data),1)),test_data])
return x.dot(self.theta)
#********* End *********#
第3关:衡量线性回归的性能指标
本关任务:根据本关卡所学知识,用Python实现线性回归常用评估指标,并对构造的线性回归模型进行评估。
#encoding=utf8
import numpy as np
#mse
def mse_score(y_predict,y_test):
mse = np.mean((y_predict-y_test)**2)
return mse
#r2
def r2_score(y_predict,y_test):
'''
input:y_predict(ndarray):预测值
y_test(ndarray):真实值
output:r2(float):r2值
'''
#*** Begin *#
r2 =1-mse_score(y_predict,y_test)/np.var(y_test)
#* End *#
return r2
class LinearRegression :
def init(self):
'''初始化线性回归模型'''
self.theta = None
def fit_normal(self,train_data,train_label):
'''
input:train_data(ndarray):训练样本
train_label(ndarray):训练标签
'''
#* Begin *#
x = np.hstack([np.ones((len(train_data),1)),train_data])
self.theta =np.linalg.inv(x.T.dot(x)).dot(x.T).dot(train_label)
#* End *#
return self
def predict(self,test_data):
'''
input:test_data(ndarray):测试样本
'''
#* Begin *#
x = np.hstack([np.ones((len(test_data),1)),test_data])
return x.dot(self.theta)
#* End *#
第4关:scikit-learn线性回归实践 - 波斯顿房价预测
本关任务:你需要调用 sklearn 中的线性回归模型,并通过波斯顿房价数据集中房价的13种属性与目标房价对线性回归模型进行训练。我们会调用你训练好的线性回归模型,来对房价进行预测。
#encoding=utf8
#********* Begin *********#
import pandas as pd
from sklearn.linear_model import LinearRegression
train_data = pd.read_csv('./step3/train_data.csv')
train_label = pd.read_csv('./step3/train_label.csv')
train_label = train_label['target']
test_data = pd.read_csv('./step3/test_data.csv')
lr = LinearRegression()
lr.fit(train_data,train_label)
predict = lr.predict(test_data)
df = pd.DataFrame({'result':predict})
df.to_csv('./step3/result.csv', index=False)
#********* End *********#