- 博客(45)
- 收藏
- 关注
原创 机器学习sklearn-逻辑回归&评分卡案例
Sigmoid函数的公式和性质Sigmoid函数是一个S型的函数,当自变量z趋近正无穷时,因变量g(z)趋近于1,而当z趋近负无穷时,g(z)趋近于0,它能够将任何实数映射到(0,1)区间,使其可用于将任意值函数转换为更适合二分类的函数。因为这个性质,Sigmoid函数也被当作是归一化的一种方法,与我们之前学过的MinMaxSclaer同理,是属于数据预处理中的“缩放”功能,可以将数据压缩到[0,1]之内。区别在于,MinMaxScaler归一化之后,是可以取到0和1的(最大值归一化后就是1,最小值归一
2022-01-05 21:28:26 3276
原创 机器学习sklearn-PCA降维算法
1 概述1.1 什么叫“维度”对于数组和Series来说,维度就是功能shape返回的结果,shape中返回了几个数字,就是几维。针对每一张表,维度指的是样本的数量或特征的数量,一般无特别说明,指的都是特征的数量。对图像来说,维度就是图像中特征向量的数量。特征向量可以理解为是坐标轴。**降维算法中的”降维“,指的是降低特征矩阵中特征的数量。**降维的目的是为了让算法运算更快,效果更好,但其实还有另一种需求:数据可视化。1.2 sklearn中的降维算法sklearn中降维算法都被包括在模块
2021-12-30 21:04:58 9153 2
原创 机器学习sklearn-数据预处理与特征工程
一、概述数据不给力,再高级的算法都没有用。数据挖掘的五大流程:获取数据数据预处理数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断。也可能,数据的质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复,数据是偏态,数据量太大或太小数据预处理的目的:让数据适应模型,匹配模型的需求特征工程:特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑
2021-12-28 16:49:29 2044
原创 机器学习sklearn-随机森林
集成算法概述集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据上构建多个模型,集成所有模型的建模结果。基本上所有的机器学习领域都可以看到集成学习的身影,在现实中集成学习也有相当大的作用,它可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。在现在的各种算法竞赛中,随机森林,梯度提升树(GBDT),Xgboost等集成算法的身影也随处可见,可见其效果之好,应用之广。集成算法的目标
2021-12-24 16:58:27 4147
原创 机器学习sklearn-决策树
机器学习sklearn-决策树sklearn的基本建模流程DecisionTreeClassifier分类树一、重要参数1.criterion为了要将表格转化为一棵树,决策树需要找出最佳节点和最佳的分枝方法,对分类树来说,衡量这个“最佳”的指标叫做“不纯度”。通常来说,不纯度越低,决策树对训练集的拟合越好。现在使用的决策树算法在分枝方法上的核心大多是围绕在对某个不纯度相关指标的最优化上。不纯度基于节点来计算,树中的每个节点都会有一个不纯度,并且子节点的不纯度一定是低于父节点的,也就是说,在同一
2021-12-21 20:25:31 898
原创 机器学习算法基础 DAY 7 逻辑回归&k-means
模型的保存与加载from sklearn.externals import joblib保存:joblib.dump(rf,'test.pkl')加载:estimator = joblib.load('test.pkl')注:文件格式pkl加载训练好的模型,就不需要再进行模型训练。分类算法-逻辑回归线性回归的式子作为逻辑回归的输入。逻辑回归是解决二分类问题的利器sigmoid函数与y轴交点值为0.5逻辑回归公式输出:[0,1]区间的概率值,默认0.5作为阈值注:g(
2021-11-10 20:14:25 879
原创 机器学习算法基础 DAY 6 线性回归&岭回归
回归算法-线性回归分析回归:目标值连续线性回归:寻找一种能预测的趋势线性关系:二维,直线关系;三维,目标值在一个平面内。线性模型通过属性的线性组合来进行预测的函数:线性回归预测结果与真实值是有一定的误差单变量:多变量:损失函数(误差大小)尽量去减少这个损失(两种方式),目的是找到最小损失对应的W值。最小二乘法之正规方程这个参数向量,就可以让代价函数取最小值。最小二乘法之梯度下降sklearn线性回归正规方程、梯度下降API正规方程:sklearn.line
2021-11-09 20:33:04 194
原创 机器学习算法基础 DAY 5 决策树、随机森林
分类算法-决策树、随机森林认识决策树信息论基础-银行贷款分析决策树的生成泰坦尼克号乘客生存分类决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。如:信息的度量和作用假设有32支球队,猜谁“谁是世界杯冠军”的信息量应该比5比特少。香农指出,它的准确信息量应该是:H = -(p1logp1 + p2logp2 + … + p32log32)式中log以2为底信息熵H的专业术语称之为信息
2021-11-08 20:45:39 332
原创 机器学习算法基础 DAY 4 朴素贝叶斯算法&算法调优
分类算法-朴素贝叶斯算法联合概率和条件概率朴素贝叶斯-贝叶斯公式属于某个类别的概率为0显然不合适,所以引入拉普拉斯平滑系数。拉普拉斯平滑系数sklearn朴素贝叶斯实现APIsklearn.naive_bayes.MultinomialNB(alpha = 1.0)alpha:拉普拉斯平滑系数朴素贝叶斯算法案例sklearn20类新闻分类20个新闻组数据集包含20个主题的18000个新闻组帖子案例流程加载20类新闻数据,并进行分割生成文章特征词朴素贝叶斯e
2021-11-05 17:35:32 600
原创 机器学习算法基础 DAY 3 k近邻算法(KNN)
分类算法-k近邻算法(KNN)定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。来源:KNN算法最早是由Cover和Hart提出的一种分类算法计算距离公式两个样本的距离可以通过如下公式计算,又叫欧式距离比如说,a(a1,a2,a3),b(b1,b2,b3)相似的样本,特征之间的值都是相近的。例子:事前数据需要做标准化处理sklearn k-近邻算法APIsklearn.neighbors.KNeighbor
2021-11-04 17:01:40 158
原创 机器学习算法基础 DAY 2
特征选择特征选择原因冗余:部分特征的相关度高,容易消耗计算性能噪声:部分特征对预测结果有负影响特征选择是什么特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。主要方法(三大武器):Filter(过滤式):VarianceThresholdEmbedded(嵌入式):正则化、决策树Wrapper(包裹式)VarianceThres
2021-11-03 18:23:08 891
原创 机器学习算法基础 DAY 1
数据集可用的数据集:Kaggle:1.大数据竞赛平台2.80万科学家3.真实数据4.数据量巨大UCI:1.收录了360个数据集2.覆盖科学、生活、经济等领域3.数据量几十万scikit-learn:1.数据量较小2.方便学习常用数据集数据的结构组成结构:特征值+目标值数据中对于特征的处理pandas:一个数据读取非常方便以及基本的处理格式的工具;sklearn:对于特征的处理提供了强大的接口。特征工程特征工程是将原始数据转换为更好地代表预测模型的潜
2021-11-02 17:12:09 584
原创 机器学习中的数学基础 DAY 4
优化问题简介https://en.wikipedia.org/wiki/Mathematical_optimization常见的损失函数https://zhuanlan.zhihu.com/p/58883095正则化:https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E5%8C%96/5739561?fr=aladdin最速下降法梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解
2021-11-01 17:09:50 148
原创 机器学习中的数学基础 DAY 3
随机变量与概率分布连续变量随机变量伯努利分布泊松分布正态分布贝叶斯定理贝叶斯定理(英语:Bayes’ theorem)是概率论中的一个定理,描述在已知一些条件下,某事件的发生概率。比如,如果已知某人妈妈得癌症与寿命有关,使用贝叶斯定理则可以通过得知某人年龄,来更加准确地计算出他妈妈罹患癌症的概率。通常,事件A在事件B已发生的条件下发生的概率,与事件B在事件A已发生的条件下发生的概率是不一样的。然而,这两者是有确定的关系的,贝叶斯定理就是这种关系的陈述。贝叶斯公式的一个
2021-10-30 18:08:31 192
原创 机器学习中的数学基础 DAY 2
目录向量、矩阵、张量向量与矩阵运算矩阵的逆与伪逆行列式性质矩阵分解向量、矩阵、张量张量(英语:Tensor)是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在n维空间内,有n^r个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。r称为该张量的秩或阶(与矩阵的秩和阶均无关系)。在同构的意义下,第零阶张量(r=0)为标量,第一阶张量(r=1)为矢量, 第二阶张量(r=2)则成为
2021-10-28 20:40:38 1083
原创 机器学习中的数学基础 DAY 1
O(n) o(n)order:阶,多次式阶,x^2+x+1 阶2f(x)=O(g(x)):存在x0、M,使得x>=x0时,f(x)<=Mg(x)2x^2 = O(x^2),M=2,x0任意x^2+x+1 = O(x^2),M=2,x0=10f(x)=o(g(x)):对于任意的ε,存在x0,使x>=x0时,f(x)<=εg(x)x=o(x^2)x^2+x+1 = o(x^3)表示f(x)的阶比g(x)小维基百科:大O符号(英语:Big O notatio
2021-10-27 21:03:37 1058
原创 数据科学库(HM)测验
目录1、创建一个长度为10的一维全为0的ndarray对象,然后让第5个元素等于12、创建一个元素为从10到49的ndarray对象,使用随机整数完成3、将第2题的所有元素位置反转4、使用np.random.random创建一个10*10的ndarray对象,并打印出最大最小元素5、创建一个范围在(0,1)之间的长度为12的等差数列6、创建一个长度为10的随机数组并排序7、创建一个长度为10的随机数组并将最大值替换为08、正则化一个5*5随机矩阵9、检查dataframe是否有缺失值以及统计datafram
2021-10-26 21:52:07 2015
原创 数据科学库(HM)DAY 6
练习现在我们有2015到2017年25万条911的紧急电话的数据,请统计出出这些数据中不同类型的紧急情况的次数。方法一import pandas as pdimport numpy as npdf = pd.read_csv("./911.csv")#获取分类print(df["title"].str.split(": ") )temp_list = df["title"].str.split(": ").tolist()cate_list = list(set([i[0] for i
2021-10-25 21:29:57 199
原创 数据科学库(HM)DAY 5
数据的合并和分组聚合字符串离散化继续DAY4,对于这一组电影数据,如果我们希望统计电影分类(genre)的情况,应该如何处理数据?import pandas as pdfrom matplotlib import pyplot as pltimport numpy as npfile_path = "./IMDB-Movie-Data.csv"df = pd.read_csv(file_path)print(df["Genre"].head(3))#统计分类的列表temp_list
2021-10-22 19:12:54 170
原创 数据科学库(HM)DAY 4
数组的拼接竖直拼接的时候:每一列代表的意义相同,否则牛头不对马嘴。如果每一列的意义不同,这个时候应该交换某一组的数的列,让其和另外一类相同。数组的行列交换练习:现在希望把之前案例中两个国家的数据方法一起来研究分析,同时保留国家的信息(每条数据的国家来源),应该怎么办?import numpy as npus_data = "./youtube_video_data/US_video_data_numbers.csv"uk_data = "./youtube_video_data/GB_v
2021-10-21 22:06:45 207
原创 数据科学库(HM)DAY 3
numpy学习什么是numpy一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库的基础库,多用于在大型、多维数组上执行数值运算。numpy创建数组(矩阵)import numpy as np#使用numpy生成数组,得到ndarray的类型t1 = np.array([1,2,3])print(t1)print(type(t1))t2 = np.array(range(10))print(t2)print(type(t2))t3 = np.a
2021-10-20 21:27:38 363
原创 数据科学库(HM)DAY 2
绘制散点图假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律?a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11
2021-10-19 21:26:06 188
原创 数据科学库(HM)DAY 1
什么是数据分析数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们作出判断,以便采取适当行动。什么是matplotlibmatplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建matplotlib的基础绘图from matplotlib import pyplot as pltx = range(2,26,2)y = [15,13,14.5,17,20,25,26,26,27,22,18,15]#绘图plt.plo
2021-10-18 21:22:04 141
原创 Python数据结构与算法 测验
Python数据结构测试题1.使用Python实现冒泡排序,并分析时间复杂度def bubble_sort(alist): """冒泡排序""" count = 0 #用于降低最优时间复杂度 for j in range(1,len(alist)): for i in range(len(alist)-j): if alist[i]>alist[i+1]: alist[i],alist[i+1] = a
2021-10-15 16:29:25 286
原创 Python数据结构与算法 DAY 7
树与树算法树的概念树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树;比如说:树的术语节点的度:一个节点含有的子树的个数
2021-10-14 17:34:31 63
原创 Python数据结构与算法 DAY 6
希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序过程希尔排序的基本思想是:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个
2021-10-13 21:17:51 119
原创 Python数据结构与算法 DAY 5
6.排序与搜索排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。排序算法的稳定性稳定性:稳定排序算法会让原本有相等键值的纪录维持相对次序。也就是如果一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。当相等的元素是无法分辨的,比如像是整数,稳定性并不是一个问题。然而,假设以下的数对将要以他们的第一个数字来排序。(4, 1) (3, 1) (3, 7)(5, 6)在这个状况
2021-10-12 17:11:19 56
原创 Python数据结构与算法 DAY 4
3.3 双向链表一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。操作is_empty() 链表是否为空length() 链表长度travel() 遍历整个链表add(item) 链表头部添加元素append(item) 链表尾部添加元素insert(pos, item) 指定位置添加元素remove(item) 删除节点search(item) 查找节点
2021-10-11 21:20:37 97
原创 Python数据结构与算法 DAY 3
3.链表为什么需要链表顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。链表的定义链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。单向链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个
2021-10-10 20:03:11 138 1
原创 Python数据结构与算法 DAY 2
2.顺序表在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化(可以增加或删除元素)。对于这种需求,最简单的解决方案便是将这样一组元素看成一个序列,用元素在序列里的位置和顺序,表示实际应用中的某种有意义的信息,或者表示数据之间的某种关系。这样的一组序列元素的组织形式,我们可以将其抽象为线性表。一个线性表是某类元素的一个集合,还记录着元素之间的一种顺序关系。线性表是最基本的数据结构之一,在实际
2021-10-09 16:53:29 97
原创 Python数据结构与算法 DAY 1
数据结构与算法(Python)1.引入概念如果 a+b+c=1000,且 a2+b2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?枚举法:第一次尝试import timestart_time = time.time()# 注意是三重循环for a in range(0, 1001): for b in range(0, 1001): for c in range(0, 1001): if a**2 + b**2 == c
2021-10-06 20:09:11 134
原创 Python学习 DAY 15 Python测试题
DAY 15Python测试题(一)填空题1.list(map(str, [1, 2, 3]))的执行结果为['1', '2', '3']map() 会根据提供的函数对指定序列做映射2.语句x = 3==3, 5执行结束后,变量x的值为True,53.已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) == 496103280 的值为3+号操作对可变对象和不可变对象都会改变id,+=号操作改变不可变对象id,不改变可
2021-10-05 17:30:50 7232
原创 Python学习 DAY 14
DAY 14第七章 模块(module)1.1 模块和包概念的进化史Python 程序由模块组成。一个模块对应 python 源文件,一般后缀名是:.py。模块由语句组成。运行 Python 程序时,按照模块中语句的顺序依次执行。语句是 Python 程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。1.2 标准库模块(standard library)与函数类似,模块也分为标准库模块和用户自定义模块。Python 标准库提供了操作系统功能、网络通信、文本处理、文件处理、数
2021-10-04 16:52:37 161
原创 Python学习 DAY 13
文件对象的常用属性和方法文件对象的属性:文件对象的常用方法:测试seek()移动文件指:with open("e.txt","r",encoding="utf-8") as f: print("文件名是:{0}",format(f.name)) print(f.tell()) print("读取的内容:{1}",format(f.readline())) print(f.tell()) f.seek(2) print("读取的内容:{1}", f
2021-10-03 21:33:24 88
原创 Python学习 DAY 12
DAY 12第八章 文件操作(IO技术)一个完整的程序一般都包括数据的存储和读取;我们在前面写的程序数据都没有进行实 际的存储,因此 python 解释器执行完数据就消失了。实际开发中,我们经常需要从外部存 储介质(硬盘、光盘、U 盘等)读取数据,或者将程序产生的数据存储到文件中,实现“持久化”保存。文本文件和二进制文件按文件中数据组织形式,我们把文件分为文本文件和二进制文件两大类。文本文件文本文件存储的是普通“字符”文本,python 默认为 unicode 字符集(两个字节表示 一个字符
2021-10-01 21:25:00 164
原创 Python学习 DAY 11
DAY 11#异常和错误导引问题在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不 存在或者文件格式不对;你要读取数据库的数据,数据可能是空的;我们的程序再 运行着,但是内存或硬盘可能满了等等。软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为 异常,英文是:Exception,意思是例外。遇到这些例外情况,或者叫异常。异常机制本质异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、
2021-09-30 17:14:00 144
原创 Python学习 DAY 10 第六章实操作业
DAY10第六章实操作业1.设计一个名为 MyRectangle 的矩形类来表示矩形。这个类包含:(1) 左上角顶点的坐标:x,y(2) 宽度和高度:width、height(3) 构造方法:传入 x,y,width,height。如果(x,y)不传则默认是 0,如果 width 和 height 不传,则默认是 100.(4) 定义一个 getArea() 计算面积的方法(5) 定义一个 getPerimeter(),计算周长的方法(6) 定义一个 draw()方法,使用海龟绘图绘制出这个
2021-09-29 23:28:25 658 2
原创 Python学习 DAY 9
DAY 9面对对象进阶Python 是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。封装(隐藏)隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装起来”,只 对外暴露“相关调用方法”。通过前面学习的“私有属性、私有方法”的方式,实现“封装”。Python 追求简洁的 语法,没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现。继承继承可以让子类具有父类的特性,提高了代码的重用性。从设计上是一种增量进化,原有父类设计不变的情况下,可以增加新的
2021-09-29 00:05:09 318
原创 Python学习 DAY 8
DAY 8Python中,方法没有重载Python 中,方法的的参数没有声明类型(调用时确定参数的类型),参数的数量也可以由 可变参数控制。因此,Python 中是没有方法的重载的。定义一个方法即可有多种调用方式, 相当于实现了其他语言中的方法的重载。如果我们在类体中定义了多个重名的方法,只有最后一个方法有效。方法的动态性Python 是动态语言,我们可以动态的为类添加新的方法,或者动态的修改类的已有的方法。#测试方法的动态性class Person: def work(self)
2021-09-27 23:52:46 228 1
原创 Python学习 DAY 7
DAY7嵌套函数(内部函数)在函数内部定义的函数,嵌套函数只能在定义了它的函数内部调用;封装 - 数据隐藏外部无法访问“嵌套函数”。贯彻 DRY(Don’t Repeat Yourself) 原则嵌套函数,可以让我们在函数内部避免重复代码。闭包:后面会详细讲解nonlocal关键字nonlocal:用来声明外层的局部变量。global:用来声明全局变量。#测试 nonlocal、global 关键字的用法def outer(): b = 10 def
2021-09-25 23:14:29 80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人