08 实现我们自己的 Linear Regression
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
import datetime;print("Run by CYJ,",datetime.datetime.now())
Run by CYJ, 2022-01-20 20:06:04.130127
boston = datasets.load_boston()X = boston.data
y = boston.targetX = X[y < 50.0]
y = y[y < 50.0]
X.shape
(490, 13)
from playML.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, seed=666)
使用我们自己制作 Linear Regression
代码参见 这里from playML.LinearRegression import LinearRegressionreg = LinearRegression()
reg.fit_normal(X_train, y_train)
LinearRegression()
reg.coef_
array([-1.20354261e-01,  3.64423279e-02, -3.61493155e-02,  5.12978140e-02,-1.15775825e+01,  3.42740062e+00, -2.32311760e-02, -1.19487594e+00,2.60101728e-01, -1.40219119e-02, -8.35430488e-01,  7.80472852e-03,-3.80923751e-01])
reg.intercept_
34.11739972320593
reg.score(X_test, y_test)
0.8129794056212907

封装的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)

[云炬python3玩转机器学习] 5-7,8 多元线性回归正规解及其实现相关推荐

  1. [云炬python3玩转机器学习] 5-6最好的衡量线性回归法的指标: R Squared

    RMSE MAE 无法解决 不同模型之间的误差值比较,如预测房产数据误差为5万元,而预测学生成绩误差是10分,无法进行比较算法是用在哪个问题上好 R Squared就可以解决这种问题 y = y均值这 ...

  2. [云炬python3玩转机器学习笔记] 1-3课程所使用的主要技术栈

    课程环境 语言:Python3 框架:Scikit-learn 其他框架:numpy,matplotlib... IDE:Jupyter Notebook,PyCharm,ANACONDA 课程学习基 ...

  3. [云炬python3玩转机器学习笔记] 3-2 Jupter Notebook魔法命令

    xxxxxxxxxx### %run %run¶ In [1]:%run myscript/hello.py hello Machine Learning ! . . .In [2]:xxxxxxxx ...

  4. [云炬python3玩转机器学习笔记] 3-1 Jupyter Notebook

    1+2for _ in range(5):print("Hello, Machine Learning!")5+5*29+9print("天津云炬网络科技有限公司&quo ...

  5. [云炬python3玩转机器学习笔记] 2-6关于回归和分类

    在这一章,我们了解到了,机器学习主要可以处理的两大类问题,是回归和分类.看起来,似乎有些局限,但是,非常出人意料的,在我们现实生活中,很多问题,都可以通过化简,或者转换的手段,转换成分类问题或者回归问 ...

  6. [云炬python3玩转机器学习笔记] 2-5机器学习相关的哲学思考

    2-5机器学习相关的哲学思考

  7. [云炬python3玩转机器学习笔记] 2-4批量学习、咋西安学习、参数学习和非参数学习

    机器学习的其他分类: 在线学习(online learining)和批量学习(离线学习 batch learning/offline learning): 批量学习(之前没有具体说明的话,都可以用批量 ...

  8. [云炬python3玩转机器学习笔记] 2-2机器学习主要任务

    机器学习(监督学习)的主要任务 一.分类:将给定的数据进行分类- 二分类任务:二选一的方式,yes/no- 多分类任务:结果不仅仅在两个结果中,而是很多结果,获得的结果很明确- 数字识别- 图像识别- ...

  9. [云炬python3玩转机器学习笔记] 2-1机器学习基础概念

    机器学习基础概念 一.关于数据 本文约定: 大写表示矩阵 小写表示向量 上标代表第几个样本 下标代表第几个特征 一般向量都表示为列向量 特征空间:每个维度都可以表示一个特征,形成一个空间(2D,3D, ...

  10. [云炬python3玩转机器学习笔记] 1-1什么是机器学习

    一. 什么是机器学习 机器学习本质是在模拟人类进行思考学习,人类的思考学习大部分来自经验的积累,机器学习也一样 二.机器学习的应用场景 (一)已投入生产的 (二)未来需要运用机器学习的领域 在未来,A ...

最新文章

  1. Spark Shuffle两种Manager
  2. axure中怎么做出固定首行_办公软件操作技巧078:如何在excel表格中冻结行与列...
  3. BZOJ 4327 [JSOI2012]玄武密码 (AC自动机)
  4. Xmind settings lower
  5. 201571030322/201571030319《小学生四则运算软件需求说明结对项目报告》
  6. 基于 axios 的 Vue 项目 http 请求优化
  7. new String(123) 创建了几个对象?
  8. HttpURLConnection与HttpClient提交FORM表单参数请求工具类
  9. [原]ASP.NET中使用JQUERY-EASYUI后,解决ClientScript.RegisterStartupScript 所注册脚本执行两次...
  10. NYOJ41 - 三个数从小到大排序
  11. lintcode java_Lintcode-java版本
  12. 欧盟gmp中的计算机系统验证,欧盟GMP中的计算机系统验证
  13. java定时器定时发短信,定时任务(如:定时发送短信信箱等)
  14. Edwin 的基本使用
  15. 服务器到内地更快的美国HS网络服务器
  16. 基于opencv的证件照换背景
  17. setPositiveButton和setNegativeButton
  18. [Graphics]自组织植物建模方法(ContinousLassoBrush)
  19. 2022年南京大学计算机拔尖班初试考后感想
  20. 中文汉字翻译为相应的拼音

热门文章

  1. TensorFlow--线性回归问题初步
  2. 不容错过的8个持续集成工具
  3. Neo4j CQL - (3) -RETURN子句
  4. Apache Storm 官方文档 —— 源码组织结构
  5. PHP实现一个ip(如:127.0.0.1)和多个域名(虚拟主机)的绑定
  6. poj-Scout YYF I
  7. NYOJ 915 +-字符串
  8. Ubuntu下串口通信之cutecom
  9. gbk文件转为utf8文件
  10. Test 2018-09-19