钻研技术的产品汪
__回顾:__同时使用L1正则和L2正则的线性回归模型就称为Elastic Net,$color{red}{弹性网络算法}$ 在实际工作中,对于各种算法模型(线性回归)来讲,__我们需要输入θ、p、λ的值。
1、引入头文件 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import pandas as pd import warnings import sklearn from sklearn.
== 损失函数 == 损失函数是衡量一个模型好坏的指标,一般来说损失函数的值越小越好。 0~1损失函数: J(θ)=$begin{cases}1,Y≠f(X)\0,Y=f(X)\end{cases}$ 如果预测值不等于真实值,J(θ)值加1。
== 多项式扩展 == 上一章的最后我们提到:训练集上表现得不好,那么测试集上的效果肯定也不好,即$color{red}{欠拟合}$ 训练集上表现得好,测试集表现得不好,即$color{red}{过拟合}$ 如何解决本案例中遇到的欠拟合问题? 1、增加数据集中的观测值 (样本数量)2、增加数据的维度 (特征数量) 如果拿不到新数据的情况下(样本数量不变),只能通过增加数据维度的方法来解决欠拟合的问题,那用什么方式来增加维度呢? 本章我们讨论“多项式扩展”的方法来解决上述问题。
回顾线性回归的公式:θ是系数,X是特征,h(x) 是预测值。 h(x) = θ0 + θ1x1 + θ2x2 + … + θnxn h(x) = Σ θixi( i=0~n ) h(x) = θTX = [θ1,θ2,θ3,…,θn] * [x1,x2,x3,…,xn]T 最终要求是计算出θ的值,并选择最优的θ值构成算法公式,使预测值能够尽可能接近真实值。
回顾线性回归的公式:θ是系数,X是特征,h(x) 是预测值。 h(x) = θ0 + θ1x1 + θ2x2 + … + θnxn h(x) = Σ θixi( i=0~n ) h(x) = θTX = [θ1,θ2,θ3,…,θn] * [x1,x2,x3,…,xn]T 最终要求是计算出θ的值,并选择最优的θ值构成算法公式,使预测值能够尽可能接近真实值。
今天开始将进入机器学习的回归算法部分,首先介绍一下回归部分涉及到的知识点。 一、大纲 1、线性回归 预测连续值的方法。 2、Logistic回归 名曰回归,实际上是处理分类的方法。
理论部分先告一段落,如果还有不清晰的地方可以选择留言或我私下沟通。今天起正式进入代码阶段,入门项目是赌球神器。 一、建模步骤 1、清洗数据集 。 2、划分训练集和测试集:12个特征;1个目标 - 获胜队伍:主队、客队、平局; 3、训练三种不同的分类器:Logistic Regression、Support Vector Machine、XGBoost 。
1、下载网址 https://www.lfd.uci.edu/~gohlke/pythonlibs 2、CTRL+F 查找 xgboost 3、单击 xgboost,找到如下页面: 4、查询Python版本 在cmd下输入:python 返回Python的版本:Python 3.
一、模型训练 1、模型选择 定义:面向任务,选择最优的建模方法和参数。 建模可以使用不同的 “图纸” :Logistic、SVM、Bayes ,根据三个不同的图纸,选择最像任务目标的模型。
大部分机器学习模型处理的都是特征,是实际工作中最耗时的一部分。大部分情况下,收集到的数据需要经过预处理后才能被后续的机器学习算法所使用。 一、数据预处理包括以下几个步骤 1、数据过滤 比如用户ID是一个唯一值,当出现两个相同的用户ID就需要过滤掉一个。
上一章《02 机器学习理性认识》让大家对机器学习的相关算法有了一个初步的认识和了解。 笔者的写作思路是先把机器学习的每个大分类,以及大分类下的中小分类做一个总体介绍。
理性看待机器学习,不吹不黑。 本章对一些机器学习的术语进行介绍,还将对一些常用的参数符号进行解释,后文里不再赘述。 1、输入与输出 在机器学习过程中,首先我们要喂给机器很多数据,然后机器根据一定的算法给出结果。
相信很多人对于AI的作用以及将来工作的方式存在很多疑问,这里简单得和大家分享一下我的一些心得。 实际上在之前Python-科学计算库当中涉及到的模块,比如numpy基础建模、pandas数据处理、matplotlib统计绘图,都是为机器学习打基础的。
=== 头文件 === import matplotlib.pyplot as plt import numpy as np import pandas as pd # 解决中文显示问题 import matplotlib as mpl mpl.
=== 折线图 - 头文件 === 解决: 1、中文显示问题 2、图像行内外显示 3、处理闪退问题 import matplotlib.pyplot as plt import numpy as np import pandas as pd # 解决中文显示问题 import matplotlib as mpl mpl.
=== 聚合 apply === 定义:apply是pandas库的一个重要函数,多和groupby函数一起使用,也可以直接用于DataFrame和Series对象。
=== 表合并 === 场景:两个dataFrame,一个是学生的[学号,姓名,班级] [学号,成绩] ,通过学号将两组信息合并到一起 print('\n---- 学生信息 ---') students = pd.
=== 排序 === 原数据: data1 = pd.DataFrame(np.random.randint(0,9,[5,5]), index=list('abcde'), ...
=== 层次索引 === 1、多层索引 index 一组成绩:[89,99,56,44,33,56] 前三个2017年的语数英成绩 后三个2018的语数英成绩 deep_Series = pd.
=== 相关系数与协方差 === 相关系数(Correlation coeffieient): 是研究变量之间线性相关程度的量,一般用字母 r 表示。 协方差(Convariance,COV): 反应了两个样本之间的相互关系和关联程度。
=== 数据过滤获取 === 个人觉得并没有什么用,完全可以用切片或索引器代替 stu_info = pd.read_excel('student_info1.
=== 获取内容 === import pandas as pd import numpy as np stu_info = pd.read_excel('student_info1.
=== DataFrame 简介 === 定义:数据帧 (DataFrame) 是二维数据结构,即数据以行和列的表格方式排列。 特点: 1、 潜在的列是不同的类型 2、 大小可变 3、 标记轴是行和列 (行、列索引) 4、 可以对行和列进行算数运算 =...
=== 新增、删除=== # 新增/修改 result['化学'] = 100 # 删除 del result['语文'] === 取值操作 === # 取值操作 print('-'*10+'Ser_scores'+'-'*10) scores={...
=== Series 简介 === 由一组数据和索引组成 数据是各种numpy数据类型 索引值可重复 === Series 数据创建 === # 使用 ndarray 创建 ran_num = np.
=== Pandas 简介 === Pandas是一个开源的数据分析工具。 官网:http://pandas.pydata.org/ 官方文档:http://pandas.
=== np.where函数 === np.where( 判断条件[布尔类型数组],True使用的值,False使用的值 ) 例1:两组数据,取对应位置较大的值 arr1 = np.
=== 聚合函数定义 === 对一组数据进行操作,如取均值、最大值等 scores = np.random.randint(1,9,[2,3]) scores array([[3, 2, 8],[4, 3, 3]]) == 最大值 max == axis 指定轴:0竖着的计算,1横着的计算 print(scores.
=== 求模运算 === scores = np.array([[19,29,35],[39,27,14],[0,2,7]]) print(scores) np.
=== 一元函数 === 随机生成5x5的,从-10到10的整数数组 import numpy as np data = np.random.randint(-10,10,[5,5]) === abs fabs 求绝对值 fabs不能求复数的绝对值 === print(data) np.
== 数组的转置与轴对换 == np1 = np.arange(0,40).reshape(10,4) print(np1) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19...
=== 为三个学生的三门课程成绩建模 === 姓名/成绩 语文 数学 英语 物理 Tom 90 100 110 89 Ali 80 100 33 99 Li 89 99 33 93 stu_info = np.
=== 数学知识补充 === 矩阵:多维数组即矩阵 矩阵积: 两个二维矩阵(行和列的矩阵)满足第一个矩阵的列数,与第二个矩阵的行数相同,那么可以进行矩阵的乘法。
将100个数改成10*10的形状 np1 = np.arange(0,100,1) np1 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2...
=== np.array的属性 === np1 = np.array([[1,2],[2,2],[3,2]]) np1 array([[1, 2],[2, 2],[3, 2]]) 1、取维度 np1.
== 传统处理数据,给每个人的成绩加10分 == scores=[89,33,11] for i in scores: print(i+10) type(scores) 99 43 21list === 使用numpy处理数据 === 1、 ...