zoukankan      html  css  js  c++  java
  • 线性回归预测波士顿房价

     预测波士顿的房价,上次已经通过房间数目预测了房价,这次用多元线性回归预测。

    根据之前推导的多元线性回归的参数

     

    接下来是多元线性回归的代码实现

    def LinearRegression_(x,y):
        np.array(x)
        np.array(y)
        a = (np.linalg.inv(x.T.dot(x))).dot(x.T).dot(y)

    上次大致了解了得个feature的name。下面是‘ZN’和‘RM’的散点图(由于我比较懒所以只实现这两个)

    我们可以看出每个特征的数据范围相差较大,为了加快梯度下降求最优解的速度,将它们进行归一化处理

    from sklearn import preprocessing
    min_max_scaler = preprocessing.MinMaxScaler()
    #分别对训练和测试数据的特征以及目标值进行标准化处理
    boston['data']=min_max_scaler.fit_transform(boston['data'])
    boston['target']=min_max_scaler.fit_transform(boston['target'].reshape(-1,1))

    在对y进行标准化的时候会报错,因此要对boston['target']reshape()。下面就是进行数据划分和预测

    x = pd.DataFrame(boston['data'],columns=boston['feature_names'])
    y = pd.DataFrame(boston['target'],columns=['target'])
    x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.33, random_state=42)

    这里我们用网格搜索法进行调参。我们用GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。

    param = {'fit_intercept':[True,False],'normalize':[True,False],'copy_X':[True,False]}
    grid = GridSearchCV(estimator=lr, param_grid=param, cv=5)
    grid.fit(x_train,y_train)
    print(grid.score(x_test,y_test))

    最后得分

    0.7258515818230062
  • 相关阅读:
    PHP MVC运用
    17个方法防止dedeCMS织梦网站被黑挂木马
    少有人走的路
    你有选择的自由
    产品经理需要掌握哪些能力
    产品经理的工作流程
    Weave实现跨主机容器互联
    转载【docker】CMD ENTRYPOINT 的使用方法
    Docker:发布镜像问题denied: requested access to the resource is denied的解决方法
    Docker Dockerfile基本配置
  • 原文地址:https://www.cnblogs.com/mambakb/p/10479144.html
Copyright © 2011-2022 走看看