机器学习 线性回归 头歌实训

第1关:简单线性回归与多元线性回归

1、下面属于多元线性回归的是?(BC)

A、求得正方形面积与对角线之间的关系。
B、建立股票价格与成交量、换手率等因素之间的线性关系。
C、建立西瓜价格与西瓜大小、西瓜产地、甜度等因素之间的线性关系。
D、建立西瓜书销量与时间之间的线性关系。

2、若线性回归方程得到多个解,下面哪些方法能够解决此问题?(ABC)

A、获取更多的训练样本
B、选取样本有效的特征,使样本数量大于特征数
C、加入正则化项
D、不考虑偏置项b

3、下列关于线性回归分析中的残差(预测值减去真实值)说法正确的是?(A)

A、残差均值总是为零
B、残差均值总是小于零
C、残差均值总是大于零
D、以上说法都不对


第2关:线性回归的正规方程解

编程要求

根据提示,在右侧编辑器补充 Python 代码,实现线性回归算法与MSE损失函数计算方法,并利用房价数据对模型进行训练,然后对未知的房价数据进行预测。

测试说明

只需返回预测结果即可,程序内部会检测您的代码,MSE低于30则视为过关。

#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)/2)
    #********* 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关:衡量线性回归的性能指标

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,用Python实现R-Squared指标,并用实现的R-Squared指标来评估上一关的线性回归模型。

测试说明

只需返回预测结果即可,程序内部会检测您的代码,R-Squared指标高于0.6视为过关。

#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构建线性回归模型,利用训练集数据与训练标签对模型进行训练,然后使用训练好的模型对测试集数据进行预测,并将预测结果保存到./step3/result.csv中。


测试说明
我们会获取你的预测结果与真实标签对比,R2指标高于0.6视为过关。

#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)

#写入csv
df = pd.DataFrame({"result":predict}) 
df.to_csv("./step3/result.csv", index=False)

#********* End *********#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值