zoukankan      html  css  js  c++  java
  • 【笔记】使用scikit-learn解决回归问题

    使用sklearn解决回归问题

    依然是加载数据

      import numpy as np
      import matplotlib.pyplot as plt
      from sklearn import datasets
    
      boston = datasets.load_boston()
      X = boston.data
      y = boston.target
    
      X = X[y < 50.0]
      y = y[y < 50.0]
    

    通过shape看X矩阵中的结构

      X.shape
    

    然后对数据集进行切分,由于sklearn中的随机和分割方法不同,因此,使用自己的会比较能体现出来,但是,我懒得改了

      from sklearn.model_selection import train_test_split
    
      X_train,X_test,y_train,y_test =       train_test_split(X,y,random_state=666)
    

    在sklearn中使用线性回归

    引用并实例化

      from sklearn.linear_model import LinearRegression
    
      lin_reg = LinearRegression()
    

    将X_train,y_train传进去,进行fit

      lin_reg.fit(X_train,y_train)
    

    查看其中的内容

    lin_reg.coef_

    lin_reg.intercept_

    lin_reg.score(X_test,y_test)

    Knn regressor

    我们也可以使用knn来解决回归问题

    先到用相应的类并对其进行初始化,k默认为5,在fit以后,最后看一下准确率

      from sklearn.neighbors import KNeighborsRegressor
    
      knn_reg = KNeighborsRegressor()
      knn_reg.fit(X_train,y_train)
      knn_reg.score(X_test,y_test)
    

    knn中含有超参数,我们使用网格搜索的方式来搜索一下相应的超参数,需要定义数组规定范围,创建变量构造函数,使用并行处理(-1为全部核心),并进行输出

      from sklearn.model_selection import GridSearchCV
      param_grid = [
          {
              'weights':['uniform'],
              'n_neighbors':[i for i in range(1,11)]
          },
          {
              'weights':['distance'],
              'n_neighbors':[i for i in range(1,11)],
              'p': [i for i in range(1,6)]
          }
      ]
    
      knn_reg = KNeighborsRegressor()
      grid_search = GridSearchCV(knn_reg,param_grid ,n_jobs=-1,verbose=1)
      grid_search.fit(X_train,y_train)
    

    得到结果以后可以简单地来看看最好的结果(不知道为啥,很多计算的数据结果我都和课程不一样,不知道是电脑问题还是版本问题)

      grid_search.best_params_
    

    预测准确率

      grid_search.best_score_
    

    为了得到相同的衡量标准的预测率结果,来真正看基于网格搜索算法的结果

      grid_search.best_estimator_.score(X_test,y_test)
    

    这是不如线性回归的结果的

    但是也是有一部分原因是因为使用网格搜索的时候我们比较实用的score是 GridSearchCV中的score的计算方法,我们没有挑出来使用我们这组数据中的score的来获得的最佳参数,不能武断的说某算法不如某算法,要结合应用环境以及场景才行

    感谢观看,文笔有限,博客不出彩,还请多多见谅
  • 相关阅读:
    sss
    sss
    maven tomcat jstl 异常
    第1章 预备知识
    第2章 存储管理
    第8章 虚拟机字节码执行引擎
    第23章 Spring MVC初体验
    第1章 预备知识
    第5章 Java中的锁
    第13章 线程安全与锁优化
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/14283261.html
Copyright © 2011-2022 走看看