机器学习(1)

1、机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测。

2、机器学习的数据:文件(大多数是csv)

mysql:(1)性能瓶颈,文件如果大,读取速度慢(2)格式不符合机器学习要求的数据格式

pandas:读取工具(是一个数据读取非常方便以及基本的处理格式的工具),其中的numpy读取速度快(为什么这么快?numpy释放了GIL,没有用这个锁,所以所有线程可以并行,而Cpython和Jpython不行)

3、数据集

Kaggle特点:(1)大数据竞赛平台 (2)80万科学家 (3)真实数据  (4)数据量巨大

UCI特点:(1)收录了360个数据集    (2)覆盖科学、生活、经济等领域   (3)数据量几十万

scikit-learn特点:(1)数据量较小   (2)方便学习

4、数据集数据的结构组成(特征值+目标值),有些数据集可以没有目标值

 5、机器学习:重复值(不需要进行去重)

 6、Scikit-learn即sklearn:对于特征的处理提供了强大的接口。

特征工程的意义就是提高数据的效果,直接影响模型的预测结果。

Scikit-learn是Python语言的机器学习工具

Scikit-learn包括许多知名的机器学习算法的实现

安装scikit-learn需要有Numpy,pandas等库

7、特征抽取对文本等数据进行特征值化

(1)字典特征抽取对字典数据进行特征值化,把字典中的一些类别数据分别进行转化成数组形式,有类别的这些特征先要转换成字典数据。

from sklearn.feature_extraction import DictVectorizer

DictVectorizer(sparse=True,…)如果是False,就是转换为数组。或者使用data.toarray()

DictVectorizer.fit_transform(X)       转换成数据的值才能被机器理解
        X:字典或者包含字典的迭代器
        返回值:返回sparse矩阵
DictVectorizer.inverse_transform(X)
        X:array数组或者sparse矩阵
        返回值:转换之前数据格式
DictVectorizer.get_feature_names()返回类别名称(统计所有文章当中所有的词,重复的只看做一次,同时不支持单个英文,不统计单个英文
DictVectorizer.transform(X)按照原先的标准转换

(2)文本特征抽取(需要对中文进行分词才能详细的进行特征值化,通过import jieba//jieba.cut()返回值:词语生成器,需转换成列表通过list)

from sklearn.feature_extraction.text import CountVectorizer

CountVectorizer(max_df=1.0,min_df=1,…)返回词频矩阵

CountVectorizer.fit_transform(X,y)       
        X:文本或者包含文本字符串的可迭代对象
        返回值:返回sparse矩阵调,用fit_transform方法输入数据并转换注意返回格式,利用toarray()进行sparse矩阵转换array数组
CountVectorizer.inverse_transform(X)
        X:array数组或者sparse矩阵
        返回值:转换之前数据格式
CountVectorizer.get_feature_names()
        返回值:单词列表(不支持单个中文字

8、Tf:term frequency词的频率            出现的次数

idf:逆文档频率inverse document frequency    log(总文档数量/该词出现的文档数量)

Tf*idf    体现重要性程度。

from sklearn.feature_extraction.text import TfidfVectorizer

TfidfVectorizer(stop_words=None,…) 返回词的权重矩阵

TfidfVectorizer.fit_transform(X,y)       
        X:文本或者包含文本字符串的可迭代对象
        返回值:返回sparse矩阵
TfidfVectorizer.inverse_transform(X)
        X:array数组或者sparse矩阵
        返回值:转换之前数据格式
TfidfVectorizer.get_feature_names()
        返回值:单词列表

9、特征处理:通过特定的统计方法(数学方法)将数据转换成算法要求的数据。

数值型数据:标准缩放:1、归一化  2、标准化 3、缺失值

类别型数据:one-hot编码

时间类型:时间的切分

归一化:

特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间,三个特征同等重要的时候,要进行归一化。

归一化的目的:使得某一个特征最终结果不会造成更大影响。

方差为0,说明每个特征中,所有数据都相同。

from sklearn. preprocessing import MinMaxScaler               #Scaler缩放

MinMaxScalar(feature_range=(0,1)…) 每个特征缩放到给定范围(默认[0,1])

MinMaxScalar.fit_transform(X)       
        X:numpy array格式的数据[n_samples,n_features]
        返回值:转换后的形状相同的array

注意:注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性(系统的稳定性)较差,只适合传统精确小数据场景。

标准化:

特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内。

sklearn特征化API:  scikit-learn.preprocessing.StandardScaler

StandardScaler(…) 处理之后每列来说所有数据都聚集在均值0附近方差为1

StandardScaler.fit_transform(X,y)       
        X:numpy array格式的数据[n_samples,n_features]
        返回值:转换后的形状相同的array
StandardScaler.mean_
        原始数据中每列特征的平均值
StandardScaler.std_
        原始数据每列特征的方差

对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变

对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。

缺失值:

删除

如果每列或者行数据缺失值达到一定的比例,建议放弃整行或者整列

插补

可以通过缺失值每行或者每列的平均值、中位数来填充

 sklearn缺失值API:  sklearn.preprocessing.Imputer

Imputer(missing_values='NaN', strategy='mean', axis=0按列) 完成缺失值插补,初始化Imputer,指定”缺失值”,指定填补策略,指定行或列。注:缺失值也可以是别的指定要替换的值

Imputer.fit_transform(X,y)       
        X:numpy array格式的数据[n_samples,n_features]
        返回值:转换后的形状相同的array

numpy的数组中可以使用np.nan/np.NaN来代替缺失值,属于float类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值