
机器学习
文章平均质量分 78
Jepson2017
这个作者很懒,什么都没留下…
展开
-
机器学习参数搜索与sklearn实现
参数类型一般参数:模型通过最小化损失函数自动求解的参数超参数:不能通过模型对数据进行学习而求解的参数,比如神经网络的层数、正则系数的alpha值等参数搜索超参数的搜索:提前设置好参数可以选择的后选择,然后根据不同参数组合对于模型泛化能力的贡献,选取最佳的超参数组合参数搜索的方法GridSearchCV,基于交叉验证的网格搜索法:将要搜索的参数候选值输入搜索器内,搜索器遍历每一种参数组合,使用交叉验证法对比每种参数组合下模型的表现,返回表现最好模型的参数值优点:自动调参,参数准确性高原创 2021-08-15 21:04:58 · 390 阅读 · 0 评论 -
集成学习模型
集成学习概念: 通过构建并结合多个模型来共同完成学习任务流程:构建多个子学习器使用某种集成策略将模型集成完成学习任务目的: 通过集成,提高多个子学习器的模型泛化能力子学习器筛选的原则:每个子学习器都要有一定的准确性子学习器之间要保持相对独立性和多样性集成学习策略Bagging:并行式集成学习基本原理:同时训练多个子学习器,分别对y进行预测,最后所有子学习器以投票的形式(分类)或者均值的形式(回归),返回集成的预测结果子学习器构建策略:对样本按一定比例有放回的抽样,抽出原创 2021-08-15 16:01:03 · 3141 阅读 · 0 评论 -
CART分类及回归树
决策树模型概念: 基于树形结构来拟合自变量与因变量之间的关系划分算法: 选择最佳划分特征及特征中最佳划分点位置的算法类别:ID3:信息增益判断C4.5:信息增益率判断CAR:GINI系数判断CART基尼系数法算法流程跌代计算每个特征的每个二分切点gini系数选取gini最小的特征及对应切分点为最佳分裂点进行一次样本划分对划分后的两部分样本重复以上迭代过程,逐步向下分裂所有样本被分到叶子节点中结束剪枝策略剪枝目的 :降低模型复杂度,防止过拟合预剪枝: 在构建树的过程中,原创 2021-08-15 12:29:21 · 386 阅读 · 0 评论 -
机器学习数据集划分方法
数据集划分方法划分基本准则:保持训练集和验证集之间的互斥性准则解释:测试样本尽量不在训练样本中出现,以保证验证集上的表现能代表模型的泛化能力留出法直接将数据集划分成两个互斥的集合,其中一个做训练集,一个做验证集常用划分比例: 7:3 、7.5:2.5 、8:2交叉验证法(cv)将数据集划分为k个大小相似的互斥子集,每一次以 k-1 个子集做训练,1个子集做验证,训练k次,最终返回的是k次训练结果的均值,因此交叉验证法又称为k折交叉法(k-fold)数据集划分案例用到房价预测数据:https原创 2021-08-14 23:31:19 · 3267 阅读 · 0 评论 -
模型评价 - 分类模型的常用评价指标
分类模型的常用评价指标基本指标:误差率指标解释:错分类样本占总样本的比例基本指标:准确率指标解释:正确分类样本占总样本的比例指标解读:准确率越接近1,模型越准确混淆矩阵真实情况预测:正例预测:反例正例TP(真正例)FN(假反例)反例FP(假正例)TN(真反例)衍生指标:查准率(precision)指标解释:所有真正例占所有预测为正的样本的比例指标举例:在商品推荐的过程中,我们会关心所有推荐给用户的商品(预测为正)中有多少是客户真正喜欢的(真正例)原创 2021-08-14 21:19:05 · 2097 阅读 · 0 评论 -
模型评价 - 回归模型的常用评价指标
回归模型的常用评价指标样本误差:衡量模型在一个样本上的预测准确性样本误差 = 样本预测值 - 样本实际值最常用的评价指标:均误差方(MSE)指标解释:所有样本的样本误差的平方的均值指标解读:均误差方越接近0,模型越准确较为好解释的评价指标:平均绝对误差(MAE)指标解释:所有样本的样本误差的绝对值的均值指标解读:平均绝对误差的单位与因变量单位一致,越接近0,模型越准确平均绝对误差的衍生指标:平均绝对比例误差(MAPE)指标解释:所有样本的样本误差的绝对值占实际值的比值指标解读:指标越接原创 2021-08-14 19:52:16 · 6361 阅读 · 0 评论 -
数据预处理与特征工程
数据预处理与特征工程概念: 数据预处理与特征工程泛指对训练数据集进行特征增加、删除、变换的方法目标: 通过对训练数据的处理变换,提高模型的训练表现和泛化能力。类别:特征变化:预处理、标准化、纠偏特征增加与删减:特征降维与变量扩展模型评价体系:模型:规律和经验学习:从数据中总结规律的过程误差:衡量模型准确性的指标训练集:训练模型的数据集验证集:测试机器学习模型繁华能力的数据集应用数据:模型实际应用场景中的特征集缺失值:样本的部分特征信息缺失处理方式:删除:缺失样本量非常原创 2021-08-14 18:08:58 · 1314 阅读 · 1 评论 -
sklearn实现线性模型
用sklearn实现各种线性回归模型,训练数据为房价预测数据,数据文件见https://download.csdn.net/download/d1240673769/20910882加载房价预测数据import pandas as pd df = pd.read_csv('sample_data_sets.csv') # 房价预测数据 print(df.columns)df.head()制作标签变量# 制作标签变量price_median = df['average_price'].m原创 2021-08-12 22:21:46 · 409 阅读 · 0 评论 -
Logistic回归模型和惩罚模型
Logistic回归模型主题思想是一个分类模型,通过对数据的分类边界线建立回归公式,从而实现分类。激活函数将连续的数值转化成0或1的输出。Heaviside函数(阶梯跳跃函数):0到1的跳跃过程不平滑Sigmoid函数:0到1的渐变过程平滑Logistic回归模型实现过程:将样本特征值与回归系数相乘再将所有特征值与回归系数的乘积相加最后将加和代入sigmoid函数输出一个范围在0-1之间的值结果大于0.5的样本归入1类,小于0.5的归入0类Logistic回原创 2021-08-12 09:04:12 · 5544 阅读 · 0 评论 -
线性回归模型
一元线性回归模型定义: 运用一条直线,近似地表示自变量x与因变量y之间的关系公式: Y=aX+b问题: 以下那条直线更能代表x和y的关系?问题: 如何理解线与散点之间的关系?目标:一条直线使得实际y与预测y之间的距离整体最短(一条直线使得全局误差最小)线性回归模型损失函数:线性回归模型参数优化目标:最小二乘法用最小二乘法求解上述损失函数的最小值(二次函数的最小值)关于参数a与b的损失函数:优化目标:优化转化:求偏导并令一阶导数为0代入自变量x和因变量y,即可求原创 2021-08-08 18:11:01 · 8379 阅读 · 0 评论 -
求2个字符串的最长公共字串(python算法)
如下,求s1和s2的最长公共字串s1 = “abcdefghigk”s2 = "efgabcd"思路一:第一轮从s1中依次取出1个字符,在s2中查找,看是否能够找到子串。如果没有一个字符在s2中找到,说明就没有公共子串,直接退出。如果找到了至少一个公共子串,则很可能还有更长的公共子串,可以进入下一轮。第二轮然后从s1中取连续的2个字符,在s2中查找,看看能否找到公共子串。如果没找到,说明最大公共子串就是上一轮的任意一个就行了。如果找到至少一个,则说明公共子串可能还有更长的,可以进入下一轮。思原创 2020-05-17 22:16:39 · 2471 阅读 · 0 评论 -
缺失值和异常值处理
缺失值处理判断是否有缺失值:isnull, notnull删除缺失值: dropna填充、替换缺失值:fillna(method=‘pad’,inplace=True)method参数:pad/ffill 用之前的数据填充,backfill/bfill 用之后的数据填充import pandas as pdimport numpy as npfrom scipy import sta...原创 2019-07-31 23:47:08 · 2585 阅读 · 0 评论 -
常见排序算法
用python实现常见排序算法排序列表:a=[1, 11, 17, 15, 14, 18, 19, 5, 6, 18]冒泡排序法原理:依次比较相邻元素的大小,并将大的元素后移,那么经过第一轮的排序后,最大值已经排到最后一位了;第二轮排序时,只需要将前len(a)-1个元素排序即可;依次重复len(a)-1轮即可完成排序实现代码:#冒泡排序for i in range(len(a)-1)...原创 2019-04-09 16:37:10 · 162 阅读 · 0 评论 -
利用python实现冒泡排序法
冒泡排序法:属于交换排序两两比较大小,交换位置。如同水泡咕嘟咕嘟往上冒结果分为升序和降序排列升序排序原理:n个数从左至右,索引编号从0开始到n-1,索引0和1的值比较,如果索引0大,则交换两者位置,如果索引1大,则不交换。继续比较索引1和2的值,将大值放在右侧,直到索引n-2和n-1比较完,第一轮比较完成,此时,位于最右侧的值为最大的数。第二轮从索引0开始比较到索引n-2,因为最右侧n-1位置上已经是最大值了。依次类推,每一轮都会减少最右侧的不参与比较,直至剩下的最后2个数比较。(降序和升原创 2020-05-24 11:12:56 · 274 阅读 · 0 评论 -
利用python实现选择排序法
选择排序法:两两比较大小,找出极值(极大值或极小值),放在固定的位置,这个固定的位置一般指的是某一端降序排列:n个数从左至右,索引从0开始到n-1,第一轮开始,假设索引0为最大数的索引,与后面的数两两依次比较,记录较大数的索引,此轮所有数比较完毕,将较大数的索引和索引0的数交换,如果大数位置就在索引0,不交换。第一轮比较完成后,位于索引0的数为最大值。第二轮,从索引1开始,与后面的数进行比较,找到剩余数中的最大数,将它与索引1的数交换,如果它就在索引1,则不交换。以此类推,每次左边都会固定下一个大原创 2020-05-24 12:03:37 · 499 阅读 · 0 评论 -
数据归一化和连续数据离散化处理
数据归一化处理1. 0-1标准化2. Z-score标准化#1. 0-1标准化#将数据的最大最小值记录下来,并通过max-min作为基数,进行数据的归一化处理#x=(x-min)/(max-min)df=pd.DataFrame({'v1':np.random.rand(10)*20, 'v2':np.random.rand(10)*1000})...原创 2019-07-31 23:36:13 · 4768 阅读 · 0 评论 -
K折交叉验证python实现
用KNN算法训练iris数据,并使用K折交叉验证方法找出最优的K值import numpy as npfrom sklearn import datasetsfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.model_selection import KFold # 主要用于K折交叉验证# 导入iris数据集...原创 2020-12-26 09:25:59 · 3802 阅读 · 0 评论 -
线性回归算法 - python实现
本文用python实现线性回归算法# -*- coding: utf-8 -*-"""Created on Fri Oct 11 19:25:11 2019@author: river"""from sklearn import datasets, linear_model # 引用 sklearn库,主要为了使用其中的线性回归模块# 创建数据集,把数据写入到numpy数组i...原创 2020-12-26 09:25:16 · 751 阅读 · 0 评论 -
KNN算法 - python实现
本文用python实现KNN算法# -*- coding: utf-8 -*-"""Created on Mon Oct 14 22:54:05 2019@author: river"""from sklearn import datasetsfrom collections import Counter # 为了做投票from sklearn.model_selection...原创 2020-12-26 09:24:54 · 436 阅读 · 0 评论 -
KNN算法 - python实现
K近邻算法import pandas as pdimport numpy as npimport matplotlib.pyplot as plt%matplotlib inline#案例一:电影数据分类from sklearn import neighbors #导入KNN分类模块import warningswarnings.filterwarnings('ignore'...原创 2019-07-31 23:23:57 · 295 阅读 · 0 评论 -
蒙特卡罗模拟 - python实现
基本原理蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数字方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。主要步骤如下:1.构造或描述概率过程2.实现从已知概率分布抽样3.建立各种估计量示例一:π值的计算import numpy as npimport pandas as pdimport ...原创 2019-08-04 21:22:41 · 4640 阅读 · 0 评论 -
PCA算法 - python实现
PCA降维二维数据降维import pandas as pdimport numpy as npimport matplotlib.pyplot as plt%matplotlib inline#二维数据降维#数据创建rng=np.random.RandomState(8)data=np.dot(rng.rand(2,2),rng.randn(2,200)).Tdf=pd....原创 2019-08-04 21:16:33 · 6038 阅读 · 0 评论 -
Kmeans聚类算法 - python实现
Kmeans算法K均值算法需要输入待聚类的数据和欲聚类的簇数K,主要过程如下:1.随机生成K个初始点作为质心2.将数据集中的数据按照距离质心的远近分到各个簇中3.将各个簇中的数据求平均值,作为新的质心,重复上一步,直到所有的簇不再改变import pandas as pdimport numpy as npimport matplotlib.pyplot as plt%matplo...原创 2019-08-04 21:05:40 · 6611 阅读 · 0 评论 -
线性回归模型 - python实现方法
1. 一元线性回归import pandas as pdimport numpy as npimport matplotlib.pyplot as plt%matplotlib inline#导入线性回归模块from sklearn.linear_model import LinearRegressionrng=np.random.RandomState(1) #随机种子#生...原创 2019-07-29 23:22:09 · 3235 阅读 · 0 评论 -
机器学习OneR算法
OneR算法:利用一个特征去预测分类算法思想:算法首先遍历每个特征的每一个取值,对于每一个特征值,统计它在各个类别中的出现次数,找到它出现次数最多的类别,并统计它在其他类别中的出现次数;统计完所有的特征值及其在每个类别的出现次数后,我们再来计算每个特征的错误率。计算方法为把它的各个取值的错误率相加,选取错误率最低的特征作为唯一的分类准则(OneR),用于接下来的分类。算法步骤:1.将数据...原创 2019-03-15 16:55:38 · 1169 阅读 · 0 评论 -
几种分类模型训练iris数据集
用几种常见的分类算法对iris数据进行训练,并利K折交叉验证法进行评估K折交叉验证:sklearn.model_selection.KFold(n_splits=k, shuffle=False, random_state=None)思路:将训练/测试数据集划分n_splits个互斥子集,每次用其中一个子集当作验证集,剩下的n_splits-1个作为训练集,进行n_splits次训练和测试,得...原创 2019-03-26 13:18:33 · 6102 阅读 · 1 评论 -
利用KNN算法实现手写体数字的识别
本文利用KNN算法,实现手写体数字的识别原创 2017-08-13 23:26:19 · 7870 阅读 · 2 评论