人工智能/模式识别/机器学习精华专题机器学习与数据挖掘

线性回归实例——房屋价格预测1(单变量的情况)

2017-07-31  本文已影响460人  rebirth_2017
  1. sklearn模块的线性回归模型
    from sklearn import datasets, linear_model
    # 引入模型所在模块。
    ………………

    regr = linear_model.LinearRegression()
    # 实例化模型。
    regr.fit(X_parameters,Y_parameters)
    # 为模型赋予数据X_parameters(训练数据),Y_parameters(目标数据)。
    predict_outcome = regr.predict(predict_value)
    # 输入生成预测数据需要的参数predict_value.
    predictions = {}
    predictions['intercept'] = regr.intercept_
    # 回归模型的theta0参数
    predictions['coefficient'] = regr.coef_
    # 回归模型的theta1参数
    predictions['predicted_value']=predict_outcome

我们可以发现,回归模型需要的数据包括:


Paste_Image.png

所以,我们的任务是要找出X(训练数据)和Y(目标值),X的输入形式可以是数组或矩阵,Y只能是数组。

  1. 分析整理训练数据X和目标值Y。已知房屋平米数和价格的关系数据如下:
Paste_Image.png

用函数将input_data.csv中的数据读出来:

def get_data(file_name):
    data = pd.read_csv(file_name)
    # 读取csv文件的方法
    print data
    X_parameter = [ ]
    Y_parameter = [ ]
    for single_square_feet, single_price_value in zip(data['square_feet'],data['price']):
    # 通过列名调用数据。
        X_parameter.append([float(single_square_feet)])
        Y_parameter.append([float(single_price_value)])
    pdb.set_trace()
    return X_parameter,Y_parameter

下图显示,我们得到了想要的训练数据X和目标值Y。


Paste_Image.png
  1. 调用线性回归模型
# Function for Fitting our data to linear model
def linear_model_main(X_parameters,Y_parameters,predict_value):
    # Create linear regression object
    pdb.set_trace()
    regr = linear_model.LinearRegression()
    regr.fit(X_parameters,Y_parameters)
    predict_outcome = regr.predict(predict_value)
    predictions = {}
    predictions['intercept'] = regr.intercept_
    predictions['coefficient'] = regr.coef_
    predictions['predicted_value']=predict_outcome
    return predictions

我们构造了字典: 'predictions' ,将模型输出的 θ0(regr.intercept_) ,θ1(regr.coef_) 以及预测值都存储在字典中。

Paste_Image.png
  1. 检验一下线性回归的拟合情况,将原有的数据点用蓝色标记在图中,求出对应X_parameters的每个估计值,将其用红线连接起来。
# Function to show the results of linear fit model
def show_linear_line(X_parameters,Y_parameters):
    regr = linear_model.LinearRegression()
    regr.fit(X_parameters,Y_parameters)
    plt.scatter(X_parameters,Y_parameters,color='blue')
    plt.plot(X_parameters,regr.predict(X_parameters),color='red',linewidth=4)
    plt.xticks(())
    plt.yticks(())
    plt.show()cges/4225992-b20e17ea38bacb91.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Paste_Image.png

从直观上看,拟合的直线不错!

5.这里讨论的情况是在一维的情况下进行的,也即只用一个自变量x(房屋的平米数),来估计房屋的价格。这里构造x数组还是比较简单,那如果是多个变量(平米数、房间数等)又该怎么?我们可以同理处理,看下一集。

6.参考文献:
http://dataconomy.com/2015/02/linear-regression-implementation-in-python/

上一篇 下一篇

猜你喜欢

热点阅读