机器学习的定义网上都有详细的介绍,在此不赘述,目前我认为,机器学习就是一种实现人工智能的手段
先介绍第一步:one-hot码,以及将值特征化的手段:
#one-hot码--避免权重值的影响
import pandas as pd
df = pd.DataFrame([
['green','m',20,'class1'],
['red','l',21,'class2'],
['blue','xl',30,'class3']
])
df.columns = ['color','size','weight','class label']
#print(df)
#运行到此处可以看到我们原始的图表
a = pd.get_dummies(df['color'])
#print(a) #关于color的one_hot码
#至此,***我们完成了对非数值数据的特征值化***
#文本特征抽取
#目的同上
from sklearn.feature_extraction.text import CountVectorizer
vector = CountVectorizer()
res = vector.fit_transform(['life is short , I use python','life is long , I hate python'])
print(res) #sparse矩阵
print(vector.get_feature_names()) #类别对应的名称
print(res.toarray()) #sparse --> array
#单个字母不会被统计,因为不代表实际意义;后面所带的数字是**单词**出现次数、
#关于中文文本
from sklearn.feature_extraction.text import CountVectorizer
vector = CountVectorizer()
res = vector.fit_transform(['人生苦短,我用python','人生漫长,不用python'])
print(res)
print(res.toarray())
print(vector.get_feature_names())
#在这种情况下:
#以句子为一个单位(或者说是遇到分隔符即划开(如逗号,空格))
#单个汉字同样不统计
#显然不太准确:
#from sklearn.feature_extraction.text import CountVectorizer
#vector = CountVectorizer()
#res = vector.fit_transform(['人生 苦短,我 用python','人生 漫长,不用 python'])
#print(res)
#print(res.toarray())
#print(vector.get_feature_names())
#运行上述代码会发现出现问题
import jieba
jb = jieba.cut('这个杀手不太冷')
content = list(jb)
ct = ' '.join(content) #用空格来分割
print(ct)
#把上述代码的结果放在res = vector.fit_transform(['人生苦短,我用python','人生漫长,不用python'])中即可
#返回的不再是one-hot编码,而是在统计词汇出现的次数
相关案例的图片如下:
一下是一些关键点和注意事项:
现在介绍第二部分–特征值的预处理
#特征值的预处理
#对数值型数据的处理
#(1)无量纲化--1.归一化 2.标准化
#案例(1)
#可以想象把三组数据画在三维空间中,那么误差必然较大
#使用KNN算法对数据进行说明
from sklearn.preprocessing import MinMaxScaler
mm = MinMaxScaler(feature_range=(0,1))
data = [[90,2,10,40],[60,5,15,45],[73,3,13,45]]
data = mm.fit_transform(data)
print(data)
print('\n')
#弊端:对异常值敏感
#在异常值较多的情况下使用标准化处理(使用更多)
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
data1 = [[90,2,10,40],[60,5,15,45],[73,3,13,45]]
data1 = ss.fit_transform(data)
print(data1)
一下是一些关键点:
最后介绍第三部分–特征选择
#特征选择:从特征值中选择出有意义,对模型有帮助的特征作为机器学习最终输入的数据
方式1(方差过滤)--主要应用于需要遍历的算法类型
from sklearn.feature_selection import VarianceThreshold
#threshold表示方差,删除方差小于后面数据的值,默认为0
v = VarianceThreshold(threshold=3)
a = v.fit_transform([[0,2,4,3],[0,3,7,3],[0,9,6,3]])
print(a) #显示的是保留值
#一步到位--计算特征值方差的中值
#例如:
from sklearn.feature_selection import VarianceThreshold
import numpy as np #numpy类似于matlab
feature = np.random.randint(0,100,size = (5,5))
mid = np.median(feature.var(axis = 0)) #求每一列的方差的中值
v = VarianceThreshold(threshold=mid)
a = v.fit_transform(feature)
print(a)
方式2(PAC降维)略
这里列出PCA的简单实现:
以上是机器学习必须掌握的最最基本的内容,故称之为序章。
学习才刚刚开始~