
机器学习
houyanhua1
这个作者很懒,什么都没留下…
展开
-
Python scikit-learn,数据的特征抽取,特征值化,DictVectorizer,CountVectorizer,TfidfVectorizer
scikit-learn工具可以做:数据的特征抽取、特征预处理、降维。数据的特征抽取:将文本等数据进行特征值化(转换成计算机可以理解的数字类型) demo.py(字典数据抽取,字典类型的数据转换成数字类型,DictVectorizer,one-hot编码):from sklearn.feature_extraction import DictVectorizer # 需要pip...原创 2019-02-23 19:57:32 · 1410 阅读 · 0 评论 -
Python scikit-learn,数据的预处理,归一化,MinMaxScaler
数据的预处理:通过特定的统计方法(数学方法)将数据转换成算法要求的数据数值型数据:标准缩放:归一化、标准化、缺失值处理类别型数据(字典类型):one-hot编码时间类型:时间的切分(重采样) 为什么要归一化? 归一化之后可以平衡各个特征的重要性。(例如在计算不同样本之间的距离时,归一化后可以避免某一个特征的重要性过大或过小) 归一化的缺点:归一化受异常点(最大值,最...原创 2019-02-24 16:08:39 · 3325 阅读 · 0 评论 -
Python scikit-learn,数据的预处理,标准化,StandardScaler
标准化的目的与归一化一样,都是为了避免某个特征的重要程度过大或过小。标准化的优点:受异常点的影响较小。 适用于繁杂大数据。demo.py(scikit-learn,数据的预处理,标准化,StandardScaler):from sklearn.preprocessing import StandardScaler# 标准化处理std = StandardScaler...原创 2019-02-24 21:13:22 · 7647 阅读 · 2 评论 -
Python scikit-learn,数据的预处理,缺失值处理,Imputer
缺失值的处理也可以通过pandas实现:https://blog.youkuaiyun.com/houyanhua1/article/details/87855228 demo.py(scikit-learn,数据的预处理,缺失值处理,Imputer):from sklearn.preprocessing import Imputerimport numpy as np# 缺失值处理i...原创 2019-02-24 22:11:35 · 2907 阅读 · 0 评论 -
Python scikit-learn,特征降维(降低特征的数量),特征选择,VarianceThreshold (删除低方差的特征)
特征选择的原因:1、冗余:部分特征的相关度高,容易消耗计算性能。 2、噪声(过拟合):部分特征对预测结果有负影响特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也可以不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。特征选择的主要方法:一、Filter(过滤式):VarianceThreshold。二、Em...原创 2019-02-25 10:17:37 · 5503 阅读 · 1 评论 -
Python scikit-learn,特征降维,主成分分析,PCA
PCA(Principal Component Analysis)主成分分析是一种分析、简化数据集的技术。PCA目的:数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。(删除线性相关的特征)PCA作用:可以削减回归分析或者聚类分析中特征的数量当特征数量非常多时(例如上百个,例如图片)才会考虑使用PCA,如果数据是一个稀疏矩阵推荐使用PCA降维。 demo.py(特征...原创 2019-02-25 11:27:19 · 1323 阅读 · 0 评论 -
Python 机器学习,算法分类,监督学习与无监督学习,分类与回归
监督学习(预测):特征值 + 目标值无监督学习:特征值监督学习(预测):分类(k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络); 回归(线性回归、岭回归); 标注(隐马尔可夫模型)无监督学习:聚类 k-means监督学习(预测)的目标值:离散型--分类;连续型--回归(预测输入变量与输出变量之间的关系)。 ...原创 2019-02-25 16:48:15 · 1279 阅读 · 0 评论 -
Python scikit-learn,数据集,获取自带数据集,数据集划分(划分为训练集和测试集)
获取scikit-learn自带的数据集:datasets.load_*() # 获取小规模数据集,数据包含在datasets里(不需要联网)datasets.fetch_*(data_home=None) # 获取大规模数据集(需要联网下载),data_home表示数据的保存目录(默认"~/scikit_learn_data/") demo.py(获取自带小数据集,load_*())...原创 2019-02-25 19:00:48 · 7685 阅读 · 0 评论 -
Python scikit-learn,估计器(评估器),estimator
原创 2019-02-25 21:47:55 · 2681 阅读 · 0 评论 -
Python scikit-learn,分类,K近邻算法,KNN,KNeighborsClassifier
K近邻(k-Nearest Neighbor,KNN)分类算法思路:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。 在计算距离之前,需要对特征值进行标准化(避免某个特征的重要性过大或过小)。 demo.py(分类,K近邻算法应用实例):import pandas as pdfrom sklea...原创 2019-02-26 16:48:38 · 1912 阅读 · 1 评论 -
Python scikit-learn,分类,朴素贝叶斯算法,文档分类,MultinomialNB,拉普拉斯平滑系数
朴素贝叶斯预测分类的思想就是根据待预测文档的特征(TF-IDF高的词)分别计算属于各个类别的概率,其中概率最大的类别,就是预测的类别。(朴素的意思就是文档的特征(词)之间相互独立) 朴素贝叶斯进行文档分类的简单案例: demo.py(朴素贝叶斯算法实例,预测新闻类别):from sklearn.datasets import fetch_20...原创 2019-02-26 20:56:01 · 2538 阅读 · 1 评论 -
Python scikit-learn,分类模型的评估,精确率和召回率,classification_report
分类模型的评估标准一般最常见使用的是准确率(estimator.score()),即预测结果正确的百分比。 混淆矩阵:准确率是相对所有分类结果;精确率、召回率、F1-score是相对于某一个分类的预测评估标准。 精确率(Precision):预测结果为正例样本中真实为正例的比例(查的准)()召回率(Recall):真实为正例的样本中预测结果为正例的比例(查的全)()...原创 2019-02-27 12:57:10 · 17676 阅读 · 3 评论 -
Python scikit-learn,交叉验证,网格搜索,GridSearchCV,自动调参调优
交叉验证的目的:为了让被评估的模型更加准确可信这里的验证是训练的一部分,和测试集无关。demo.py(K近邻分类算法,交叉验证,网格搜索,GridSearchCV):import pandas as pdfrom sklearn.model_selection import train_test_split, GridSearchCVfrom sklearn....原创 2019-02-27 15:57:01 · 2592 阅读 · 0 评论 -
Python scikit-learn,分类,决策树与随机森林,DecisionTreeClassifier,RandomForestClassifier,信息熵
信息熵用来度量信息的混乱程度(不确定性),单位:比特。(信息熵越小 表示结果越确定)信息熵的公式如下:, i=1,2,...,n表示所有可能的事件发生的概率。表示可能事件发生后包含的信息量(越小概率事件发生所包含的信息量越大。例如:中国乒乓球队获胜比美国乒乓球队获胜包含的信息量少)。根据公式可以得到:当都相等时,最大。即,当所有可能事件发生的可能性都相同时,信息熵最大。(...原创 2019-02-27 18:17:08 · 1710 阅读 · 0 评论 -
Python scikit-learn,回归(预测),线性回归,正规方程方式求解系数 LinearRegression,梯度下降方式求解系数 SGDRegressor。模型的保存与加载 joblib
回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系(函数关系)的一种统计分析方法。(回归问题的目标值是连续型的,分类问题的目标值是离散型的)回归有倒推的含义,就是从大量统计数据中寻找特征值与目标值之间的函数关系。(因为存在误差(损失函数)所以一般需要迭代)线性关系:二维---->直线;三维---->平面。线性回归:通过一个或者...原创 2019-02-28 21:03:40 · 2567 阅读 · 4 评论 -
Python scikit-learn,欠拟合、过拟合,正则化 (特征选择),岭回归(带正则化的线性回归,解决过拟合)
欠拟合(underfitting)---训练误差大,测试误差也大---模型过于简单(特征太少)过拟合(overfitting)---训练误差小,但测试误差大---模型过于复杂(特征太多,使用了复杂的非线性关系;训练样本有误、过少)过拟合的解决办法:1、增加训练样本数2、进行特征选择、特征降维,消除嘈杂特征,消除关联性大的特征(很难做)3、交叉验证(让所有数据都有过训练)4、...原创 2019-03-01 12:19:18 · 1814 阅读 · 0 评论 -
Python scikit-learn,二分类,逻辑回归,LogisticRegression
逻辑回归(二分类)是一种广义的线性回归(同样存在过拟合的可能),逻辑回归的目标值通过sigmoid函数转换成0-1之间的概率值,以0.5作为阈值变成二分类问题。 (二分类问题的概率与自变量之间的关系图形往往是一个S型曲线(sigmoid函数))逻辑回归:线性回归的输入---sigmoid函数---0到1之间的概率值---0.5阈值---真、假(二分类)二分类中,通常把小概率类别作为目标概率...原创 2019-03-01 17:27:43 · 8906 阅读 · 0 评论 -
Python scikit-learn,非监督学习 (没有目标值),k-means聚类算法,KMeans
k-means,k表示聚类的目标类别数(如果不知道,就是超参数)一般应用中是先进行k-means聚类,然后再进行分类预测。demo.py(k-means聚类,通过轮廓系数进行评估):import pandas as pdfrom sklearn.decomposition import PCAfrom sklearn.cluster import KMeansfr...原创 2019-03-02 16:11:17 · 451 阅读 · 0 评论 -
Python TensorFlow,TensorFlow的安装
TensorFlow(深度学习)一般用于图像识别、语音识别、自然语言处理(情感分析)、自动驾驶等。TensorFlow环境搭建(GPU版):https://pan.baidu.com/s/1eBKS7_6MtgVXnc3Cf95Dtw 密码:gwv5安装TensorFlow(CPU版):Linux/ubuntu:python2.7: pip install https://sto...原创 2019-03-02 20:51:27 · 201 阅读 · 0 评论 -
Python TensorFlow,TensorFlow的简单示例,数据流图(计算图),张量 tensor
TensorFlow中的所有计算都可以通过数据流图(计算图)来表示。tensor:张量(数据),flow:张量的计算过程数据流图如下:方框表示运算操作节点(op nodes),其中线表示数据(张量)计算的流转过程。张量是对运算结果的引用,张量中并没有真正保存数据,保存的只是得到这些数据的计算过程。张量有三个属性:name(名字)、shape(维度)、type(类型)shap...原创 2019-03-02 22:04:12 · 1293 阅读 · 0 评论 -
Python TensorFlow,计算图,创建计算图,Graph,运算操作(op)
TensorFlow中封装的函数基本上都是运算操作(op):demo.py(计算图,创建计算图,Graph):import tensorflow as tfimport osos.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 设置警告级别# TensorFlow程序中,系统会自动维护一个默认的计算图。 (所有的张量(tensor)和运算操作(...原创 2019-03-03 14:21:36 · 1819 阅读 · 0 评论 -
Python TensorFlow,会话,Session,会话的run()方法,placeholder占位符,feed操作
TensorFlow分为前端系统(定义程序的图结构)和后端系统(运行图结构)。会话的作用:1、运行图的结构 2、分配资源计算(分配CPU、GPU) 3、管理资源(变量、队列、线程等。会话结束后需要释放)demo.py(会话,Session):import tensorflow as tfimport osos.environ['TF_CPP_MIN_LOG_LEVEL...原创 2019-03-03 15:47:26 · 1235 阅读 · 0 评论 -
Python TensorFlow,张量,张量的形状、类型、阶
张量是一个类型化的N维数组(tf.Tensor),由三部分组成:名字,形状,数据类型。张量的阶:张量的数据类型:demo.py(张量的属性,shape形状,name名字,op操作):import tensorflow as tfimport osos.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 设置警告级别a = tf.cons...原创 2019-03-03 18:31:59 · 2203 阅读 · 0 评论 -
Python TensorFlow,张量的形状,静态形状与动态形状,set_shape(),reshape()
TensorFlow中,张量具有静态形状和动态形状静态形状:创建一个张量或者由操作推导出一个张量时,初始状态的形状 tf.Tensor.get_shape:获取静态形状 tf.Tensor.set_shape():更新Tensor对象的静态形状,通常用于在不能直接推断的情况下动态形状:一种描述原始张量在执行过程中的形状(动态变化) tf.reshape:创建一个具有不同动态...原创 2019-03-03 19:06:55 · 2943 阅读 · 0 评论 -
Python TensorFlow,张量的生成,张量运算的常用API,张量的类型转换 cast,张量的合并 concat
张量的数学函数API:https://www.tensorflow.org/api_docs/python/tf/math(算术运算、数学函数、矩阵运算、减少维度、序列运算)。 1.0版本的API,高版本的可能稍不同。张量的生成 API:张量改变数据类型的API:demo.py(张量的生成、张量的合并、张量的类型转换):import tensorflow as tf...原创 2019-03-04 10:10:06 · 2625 阅读 · 0 评论 -
Python TensorFlow,变量,变量的创建、初始化,TensorBoard可视化。
在TensorFlow中,变量(Variable)是一种op(运算操作),也是一种特殊的张量(Tensor),它的值就是一个张量。与其他张量不同,变量存在于session.run 调用的会话之外,也就是说,变量存储的是持久张量,当训练模型时,用变量来存储和更新参数。除此之外,在调用op之前,所有变量都应被显式地初始化过。常量与变量:常量(constant)定义后值和维度不可变,变量定义后值可变而维...原创 2019-03-04 11:31:14 · 765 阅读 · 0 评论 -
Python TensorFlow,手动实现线性回归,变量的作用域,TensorBoard中显示变量的变化,模型的保存和加载,自定义命令行参数
TensorBoard中的scalar观察标量(损失值)的变化情况如下图:模型的保存和加载可以避免模型在训练一半时突然宕机造成训练模型数据的丢失。可以通过加载模型从上次的检测点(checkpoint)的位置继续训练模型。demo.py(手动实现线性回归,TensorBoard中添加变量的变化显示,模型的保存和加载,命令行参数):import tens...原创 2019-03-04 17:21:40 · 620 阅读 · 0 评论 -
Python TensorFlow,队列,进队,出队,FIFOQueue
注意,如果一次性入队超过Queue Size的数据,enqueue操作会卡住,直到有数据(被其他线程)从队列取出。对一个已经取空的队列使用dequeue操作也会卡住,直到有新的数据(从其他线程)写入。demo.py(先进先出队列,FIFOQueue,进队,出队):import tensorflow as tfimport osos.environ['TF_CPP_MIN_LO...原创 2019-03-04 19:35:06 · 845 阅读 · 1 评论 -
Python TensorFlow,队列管理器 QueueRunner,子线程,线程协调器 Coordinator
只要有任何一个线程调用了Coordinator的request_stop()方法,所有的线程都可以通过should_stop()方法感知并停止当前线程。将QueueRunner和Coordinator一起使用,实际上就是封装了这个判断(判断should_stop())操作,从而使任何一个线程出现异常时,能够正常结束整个程序(所有线程),同时主线程也可以直接调用request_stop()方...原创 2019-03-05 10:52:29 · 570 阅读 · 0 评论 -
Python TensorFlow,读取文件流程,读取CSV文件案例,TextLineReader()
TensorFlow读取文件的流程:1、构建一个文件名队列,存放文件的路径和文件名。2、read,根据文件名队列读取文件内容,默认读取一个样本(csv按行读取,二进制文件按样本的bytes读取,图片一张一张地读取)3、decode,对文件内容进行解码。4、批处理,缓存多个样本到样本队列。上面读取文件的四步都是由子线程完成的(TensorFlow已经封装好API),主线程只负责取...原创 2019-03-05 15:52:09 · 2890 阅读 · 2 评论 -
Python TensorFlow,读取图片数据,WholeFileReader()
demo.py(读取图片):import tensorflow as tfimport osos.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 设置警告级别# 读取狗图片并转换成张量# 找到数据文件,放入列表 路径+名字->列表当中file_names = os.listdir("./dogimages/")prin...原创 2019-03-05 18:07:50 · 2405 阅读 · 0 评论 -
Python TensorFlow,读取二进制文件,FixedLengthRecordReader()
数据来源:http://www.cs.toronto.edu/~kriz/cifar.htmldemo.py(读取二进制文件,FixedLengthRecordReader()):import tensorflow as tfimport osos.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 设置警告级别# 读取二进制文件。 (二...原创 2019-03-06 10:35:22 · 810 阅读 · 0 评论 -
Python TensorFlow,TFRecord文件类型,读取数据并保存成TFRecord文件类型,TFRecordWriter()
TFRecords是Tensorflow设计的一种内置文件格式,是一种二进制文件,它能更好的利用内存,更方便复制和移动。TFRecords是为了将二进制数据和标签(训练的目标类别标签)数据存储在同一个文件中。文件的保存格式:*.tfrecords写入文件的内容:每个样本的Example协议块(键值对,类字典格式,表示一个样本数据)demo.py(TFRecord,读取数...原创 2019-03-06 13:21:03 · 2024 阅读 · 0 评论 -
Python TensorFlow,TFRecord文件类型,读取TFRecord文件,TFRecordReader()
demo.py(TFRecord,读取TFRecord,TFRecordReader()):import tensorflow as tfimport osos.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 设置警告级别# 读取tfrecords文件。# 找到数据文件,放入列表 路径+名字->列表当中file_names = ...原创 2019-03-06 14:55:52 · 1457 阅读 · 0 评论 -
Python TensorFlow,神经网络,实现简单的单层神经网络
针对线性不可分的问题(多分类),SVM算法是通过建立曲线(升维)来划分,神经网络通过建立多条直线(多个神经元,以及激活函数)来进行划分。神经网络演示神经网络输入层的输入个数与特征个数保持一致,输出层输出个数与目标类别数保持一致,输出通过softmax函数转换成每个目标类别的概率。SoftMax公式如下:损失函数--交叉熵损失函数:交叉熵损失函数与信息熵公式类似,...原创 2019-03-07 14:47:47 · 1267 阅读 · 0 评论 -
Python TensorFlow,卷积神经网络(CNN),手动实现卷积神经网络
普通的深层神经网络,层与层之间通过全连接进行稠密矩阵运算,矩阵中的权重系数比较多(参数多),影响效率且容易出现过拟合。卷积神经网络的结构:卷积层、激活函数、池化层、全连接层。卷积层:将原始图片通过Filter(过滤器,权重矩阵,卷积核,观察窗口),分割出局部信息,过滤器经过多次平移取样(步长)形成一个个局部信息然后组成卷积层,卷积层中的每一个单位点对应前面层的局部信息。(卷积的意义:一个点...原创 2019-03-07 20:07:23 · 3575 阅读 · 1 评论 -
Python TensorFlow,神经网络案例,验证码识别
captcha_input.py(读取验证码图片文件以及目标标签并保存到tfrecords文件中,图片与目标标签要一一对应):import tensorflow as tfimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 设置警告级别# 读取验证码图片以及目标标签数据,并存放到tfrecords文件中(图片验证码与目标标签...原创 2019-03-08 21:47:09 · 1251 阅读 · 2 评论 -
Python TensorFlow,分布式TensorFlow
分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(google remote procedure call),是一个高性能、跨平台的RPC框架。RPC协议,即远程过程调用协议,是指通过网络从远程计算机程序上请求服务。demo.py(分布式TensorFlow,集群中的所有服务器都需要拷贝该代码并运行):...原创 2019-03-09 17:07:34 · 278 阅读 · 0 评论