zoukankan      html  css  js  c++  java
  • 机器学习中回归分析(多变量)

    回归分析好久都没有了解了。下面再复习下。

    **1.波士顿房产数据(完整)**
    通过如下代码即可获取所有数据

    ```
    from sklearn.datasets import load_boston
    boston = load_boston()
    print (boston.DESCR)
    
    ```
    



    波士顿房价数据集(Boston House Price Dataset)包含对房价的预测,以千美元计,给定的条件是  房屋及其相邻房屋的详细信息。
    该数据集是一个回归问题。每个类的观察值数量是均等的,共有 506 个观察,13 个输入变量和1个输  出变量。
    sklearn库的datasets包含该数据集( load_boston)
    CRIM:城镇人均犯罪率。
    ZN:住宅用地超过 25000 sq.ft. 的比例。
    INDUS:城镇非零售商用土地的比例。
    CHAS:查理斯河空变量(如果边界是河流,则为1;否则为0)。
    NOX:一氧化氮浓度。
    RM:住宅平均房间数。
    AGE:1940 年之前建成的自用房屋比例。
    DIS:到波士顿五个中心区域的加权距离。
    RAD:辐射性公路的接近指数。
    TAX:每 10000 美元的全值财产税率。
    PTRATIO:城镇师生比例。
    B:1000(Bk-0.63)^ 2,其中 Bk 指代城镇中黑人的比例。
    LSTAT:人口中地位低下者的比例。

    MEDV:自住房的平均房价,以千美元计。

    ** 1.
    波士顿房产数据(完整) **
    通过如下代码即可获取所有数据

    ```
    from sklearn.datasets import load_boston
    
    boston = load_boston()
    print(boston.DESCR)
    
    ```
    


    波士顿房价数据集(Boston
    House
    Price
    Dataset)包含对房价的预测,以千美元计,给定的条件是
    房屋及其相邻房屋的详细信息。
    该数据集是一个回归问题。每个类的观察值数量是均等的,共有
    506
    个观察,13
    个输入变量和1个输
    出变量。
    sklearn库的datasets包含该数据集( load_boston)
    CRIM:城镇人均犯罪率。
    ZN:住宅用地超过
    25000
    sq.ft.的比例。
    INDUS:城镇非零售商用土地的比例。
    CHAS:查理斯河空变量(如果边界是河流,则为1;否则为0)。
    NOX:一氧化氮浓度。
    RM:住宅平均房间数。
    AGE:1940
    年之前建成的自用房屋比例。
    DIS:到波士顿五个中心区域的加权距离。
    RAD:辐射性公路的接近指数。
    TAX:每
    10000
    美元的全值财产税率。
    PTRATIO:城镇师生比例。
    B:1000(Bk - 0.63) ^ 2,其中
    Bk
    指代城镇中黑人的比例。
    LSTAT:人口中地位低下者的比例。

    MEDV:自住房的平均房价,以千美元计。

    ** 2.
    实现多变量线性回归 **
    下面给出代码

    ```
    from sklearn.svm import SVR  # 构建支持向量回归所需的SVR模型
    from numpy import *
    from sklearn import datasets
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler  # 用于数据预处理的数据放缩函数
    
    house_dataset = datasets.load_boston()  # 加载波士顿房价数据集
    house_data = house_dataset.data  # 加载房屋属性参数
    house_price = house_dataset.target  # 加载房屋均价
    house_dataset = datasets.load_boston()
    house_data = house_dataset.data
    house_price = house_dataset.target
    x_train, x_test, y_train, y_test = train_test_split(house_data, house_price, test_size=0.2)
    scaler = StandardScaler()
    # 在数据模型建立时,只能使用训练组数据,因此使用训练组数据的标准差进行标准化
    scaler.fit(x_train)
    # 对训练组和测试组的输入数据进行标准化,即f(训练组或测试组数据)=(训练组或测试组数据-训练组或测试组平均值)/训练组标准差
    x_train = scaler.transform(x_train)
    x_test = scaler.transform(x_test)
    house_dataset = datasets.load_boston()
    house_data = house_dataset.data
    house_price = house_dataset.target
    x_train, x_test, y_train, y_test = train_test_split(house_data, house_price, test_size=0.2);
    scaler = StandardScaler()
    scaler.fit(x_train)
    x_train = scaler.transform(x_train)
    x_test = scaler.transform(x_test)
    svr = SVR(kernel='rbf')  # 构建基于rbf(径向基函数)的SVR模型
    svr.fit(x_train, y_train)  # 将训练组数据输入进行训练
    y_predict = svr.predict(x_test)  # 将处理过的预测组数据输入进行预测,得出结果
    # 将实际结果与预测结果对比观察,2列的数组,左边列是实际结果,右边列是预测结果
    result = hstack((y_test.reshape(-1, 1), y_predict.reshape(-1, 1)))
    print(result)
    ```
    



    ** 3.
    网格搜索调参 **
    Grid
    Search:一种调参手段;穷举搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。其原理就像是在数组里找最大值。(为什么叫网格搜索?以有两个参数的模型为例,参数a有3种可能,参数b有4种可能,把所有可能性列出来,可以表示成一个3 * 4
    的表格,其中每个cell就是一个网格,循环过程就像是在每个网格里遍历、搜索,所以叫grid
    search

    ```
    from sklearn.datasets import load_iris
    from sklearn.svm import SVC
    from sklearn.model_selection import train_test_split
    
    iris = load_iris()
    X_train, X_test, y_train, y_test = train_test_sp(iris.data, iris.target, random_state=0)
    print("Size of training set:{} size of testing set:{}".format(X_train.shape[0], X_test.shape[
        0]))  #### grid search startbest_score = 0for gamma in [0.001,0.01,0.1,1,10,100]: for C in [0.001,0.01,0.1,1,10,100]: svm = SVC(gamma=gamma,C=C)#对于每种参数可能的组合,进行一次训练; svm.fit(X_train,y_train) score = svm.score(X_test,y_test) if score > best_score:#找到表现最好的参数 best_score = score best_parameters = {'gamma':gamma,'C':C}#### grid search end print("Best score:{:.2f}".format(best_score))print("Best parameters:{}".format(best_parameters)) Size of training set:112 size of testing set:38
    Best
    score: 0.973684
    Best
    parameters: {'gamma': 0.001, 'C': 100}
    
    ```
    



  • 相关阅读:
    Java面试题及答案整理(持续更新)
    CentOS6.4-mini系统服务列表
    Linux内核编译,模块尺寸变大的解决办法
    Configuration Opennebula3.8 & 4.x Virtual Machines Contextualizing
    CentOS6.3上Opennebula 3.8 VLAN配置
    Ubuntu 12.04 LTS主机名、IP、DNS配置总结
    Linux su
    Git安装配置总结
    Linux CentOS添加163yum源
    Linux 内核编译 modules ehci-hcd, ohci-hcd, uhci-hcd not found
  • 原文地址:https://www.cnblogs.com/lh9527/p/9527-10.html
Copyright © 2011-2022 走看看