5-7 多元线性回归和正规方程解

X是矩阵,一列是一个特征一行是一个样本

yhat是列向量

1XM的列向量,后面是mX1的行向量

n可以表示标本多也可以表示每一个样本的特征特别大

5-8 实现多元线性回归

LinearRegression.py

import numpy as np
from .metrics import r2_scoreclass LinearRegression:def __init__(self):"""初始化Linear Regression模型"""self.coef_ = Noneself.intercept_ = Noneself._theta = Nonedef fit_normal(self, X_train, y_train):"""根据训练数据集X_train, y_train训练Linear Regression模型"""assert X_train.shape[0] == y_train.shape[0], \"the size of X_train must be equal to the size of y_train"X_b = np.hstack([np.ones((len(X_train), 1)), X_train])self._theta = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train)self.intercept_ = self._theta[0]self.coef_ = self._theta[1:]return selfdef predict(self, X_predict):"""给定待预测数据集X_predict,返回表示X_predict的结果向量"""assert self.intercept_ is not None and self.coef_ is not None, \"must fit before predict!"assert X_predict.shape[1] == len(self.coef_), \"the feature number of X_predict must be equal to X_train"X_b = np.hstack([np.ones((len(X_predict), 1)), X_predict])return X_b.dot(self._theta)def score(self, X_test, y_test):"""根据测试数据集 X_test 和 y_test 确定当前模型的准确度"""y_predict = self.predict(X_test)return r2_score(y_test, y_predict)def __repr__(self):return "LinearRegression()"

metrics.py

import numpy as np
from math import sqrtdef accuracy_score(y_true, y_predict):"""计算y_true和y_predict之间的准确率"""assert len(y_true) == len(y_predict), \"the size of y_true must be equal to the size of y_predict"return np.sum(y_true == y_predict) / len(y_true)def mean_squared_error(y_true, y_predict):"""计算y_true和y_predict之间的MSE"""assert len(y_true) == len(y_predict), \"the size of y_true must be equal to the size of y_predict"return np.sum((y_true - y_predict)**2) / len(y_true)def root_mean_squared_error(y_true, y_predict):"""计算y_true和y_predict之间的RMSE"""return sqrt(mean_squared_error(y_true, y_predict))def mean_absolute_error(y_true, y_predict):"""计算y_true和y_predict之间的MAE"""assert len(y_true) == len(y_predict), \"the size of y_true must be equal to the size of y_predict"return np.sum(np.absolute(y_true - y_predict)) / len(y_true)def r2_score(y_true, y_predict):"""计算y_true和y_predict之间的R Square"""return 1 - mean_squared_error(y_true, y_predict)/np.var(y_true)

5-9 使用scikit-learn解决回归问题

model_selection.py

import numpy as npdef train_test_split(X, y, test_ratio=0.2, seed=None):"""将数据 X 和 y 按照test_ratio分割成X_train, X_test, y_train, y_test"""assert X.shape[0] == y.shape[0], \"the size of X must be equal to the size of y"assert 0.0 <= test_ratio <= 1.0, \"test_ration must be valid"if seed:np.random.seed(seed)shuffled_indexes = np.random.permutation(len(X))test_size = int(len(X) * test_ratio)test_indexes = shuffled_indexes[:test_size]train_indexes = shuffled_indexes[test_size:]X_train = X[train_indexes]y_train = y[train_indexes]X_test = X[test_indexes]y_test = y[test_indexes]return X_train, X_test, y_train, y_test

scikit-learn中的线性回归

kNN Regressor

from sklearn.model_selection import GridSearchCVparam_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_standard, y_train)

5-10 线性回归的可解性和更多思考

这些参数与房价的关系,与房间的数量,是否临河等有正相关,如co的浓度对房价有负相关

线性回归其有很好的解释性

这个是实实在在的模型,不像knn那样虚

优缺点

是个白盒子问题,得到的数据可以学到一些知识

第五章 线性回归 学习笔记下相关推荐

  1. 电气EPlan软件第一章到第五章的学习

    电气–EPlan软件第一章到第五章的学习 1.Eplan软件的简单介绍? ①介绍:CAD不能满足工程需要,所以用到Eplan,Eplan结合了windows和CAD的操作风格,使用户有了更好的体验.E ...

  2. %3c xml 和php冲突,[原创]WEB安全第五章 漏洞学习与利用11 xml实体注入

    WEB安全第五章 漏洞学习与利用11 xml实体注入 XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数 ...

  3. kafka学习_Kafka学习笔记下

    4 Kafka API实战 4.1 环境准备 1)启动zk和kafka集群,在kafka集群中打开一个消费者 [atguigu@hadoop102 kafka]$ bin/kafka-console- ...

  4. Java OOP 第五章 指导学习

    Java OOP 5 特种部队 文章目录 Java OOP 5 特种部队 一.内容回顾 二.难点突破 三.知识梳理--类和对象 四.知识梳理--继承 五.知识梳理--多态 六.知识梳理--抽象类 七. ...

  5. 第五章 决策树——学习笔记

    (一)决策树模型与学习 (二)特征选择  熵(entropy): H ( x ) = H ( p ) = − ∑ n j = 1 p i l o g p i H(x)=H(p)=- \underset ...

  6. 《Unity Shader入门精要》 第五章 开始学习Unity Shader之旅 笔记

    开始学习Unity Shader之旅 最简单的片元着色器 #pragma vertex vert #pragma fragment frat 告诉Unity那个函数包括顶点着色器的代码,哪个函数包括片 ...

  7. 计算机网络(BYSEE)第五章 运输层 学习笔记(0606)

    第 5 章 运输层 5.1 运输层协议概述 5.1.1 进程之间的通信 向应用层提供通信服务 运输层属于面向通信部分的最高层,同时也是用户功能中的最低层 只有网络边缘部分的主机的协议栈才有运输层,网络 ...

  8. 计算机网络第五章-运输层学习笔记

    5.1 运输层协议概述 5.1.1 进程之间的通信 为何需要运输层? 运输层协议和网络层协议的主要区别 5.1.2 运输层中的两个协议 UDP TCP 5.1.3 端口 使用端口对应用进程进行唯一标识 ...

  9. HTML5新特性基础学习笔记下

    6.Web储存 客户端储存数据 1.两种方式     1):localStorage - 没有时间限制的数据存储     2):sessionStorage - 针对一个session的存储数据 2. ...

  10. 第五章 shell学习之文件的排序、合并和分割

    sort命令 sort [选项] [输入文件] 选项: -c 测试文件是否已经排序,如果未被排序则输出第一个未被排序的记录 -k 指定排序的域 -m 合并两个已排序的文件,合并的文件也已经排序,如so ...

最新文章

  1. Effective C++ 之 Item 6 : 若不想使用编译器自动生成的函数,就该明确拒绝
  2. 千千万万的IT开发工程师路在何方?
  3. 空间谱专题08:相位模糊
  4. python ndarray转binary_Python 实现Image和Ndarray互相转换
  5. mmap和MappedByteBuffer
  6. java完全自学手册(java完全自学手册pdf洪维恩)
  7. mysql 执行 毫秒_记录sql执行时间毫秒级
  8. spring boot集成redis
  9. 作为面试官准备提问的问题及其答案
  10. 网站站长统计代码说明与配置
  11. python操作 e'xcel表格
  12. 你缺的不是一个“大牛” 而是一个透视宝
  13. Android 开发-创建app
  14. [python之数据分析] 基础篇1- Numpy,Scipy,Matplotlib 快速入门攻略
  15. 支付宝第三方支付保证数据的安全性
  16. 225页10万字政务大数据能力平台项目建议书
  17. 备战蓝桥杯单片机倒数第四天 小蜜蜂老师公众号更新内容
  18. 浏览器提示代理服务器出现问题,或则地址有误
  19. iptable使用笔记
  20. c#操作word图表(一)

热门文章

  1. 管理感悟:建议工作文档多使用表格EXCEL
  2. 微型计算机基础知识提纲,自考“微型计算机应用基础”自考大纲(6)
  3. axure轮播图怎么设置循环轮播_Axure教程:广告图片自动轮播+点击切换
  4. kafka 拉取的数据排序_Kafka 源码解析之 Consumer Poll 模型(七)
  5. delphi mysql类_Delphi MySQL数据库操作类
  6. 汇编指令大全及标志位
  7. ntohs, ntohl, htons,htonl的比较
  8. 怎样以最快的速度导入mysql
  9. Spring实例化bean的三种方法
  10. tar命令打包并删除原文件