感觉学习python的机器学习还是要总结下的,东西太多了,又不知道那个是常用的,不如总结一下以免忘记,也好以后查看。
1、数据集
数据集就是大量的、有效的数据,数据集分为训练集和测试集,以下全部为个人理解:训练集就是样本数据,通过对大量样本数据进行统计学计算,得到“样本们”表达出的共有的性质,就是特征。我觉得就可以类比于人类“找规律”,机器通过训练集“找规律”,找到规律后,就可以以这个规律来验证其他的数据是否符合,从而判断其他数据代表的内容是不是想要得到的目标。
最常见的小型数据集就是sklearn自带的鸢尾花数据集,sklearn是python的第三方库,开源的机器学习工具包,我们可以从中找到鸢尾花数据集,代码如下
1 from sklearn.datasets import load_iris 2 # 测试鸢尾花数集 3 def dataset(): 4 iris = load_iris() 5 print(iris)
打印出来的效果是这样的:
数据太多了,就不全截屏了,可以看到的是,共150条样本,均分成3类(指3类鸢尾花,分别是'setosa', 'versicolor', 'virginica',分别是山鸢尾花,变色鸢尾花和维吉尼亚鸢尾花),分为4个属性(分别是'sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)',分别是花萼长度,花萼宽度,花瓣长度,花瓣宽度)。想要了解更多可以 看一看探索sklearn | 鸢尾花数据集和分析鸢尾花数据集。
2、字典特征抽取
特征抽取,个人理解就是将所有的东西统一转化为数字,因为只有数字才可以进行计算处理。这里就涉及到了one-hot编码的转化方式。这是一个比较难理解的编码方式,它转换的规则应该用程序来解释。下面的程序就是字典特征抽取。
1 def dict_trans(): 2 # 设置数据 3 data = [{"关键词": "理工大学","位置":"山西"}, 4 {"关键词": "理工大学","位置":"北京"}, 5 {"关键词": "清华大学","位置":"北京"}] 6 # 实例化DictVectorizer,参数sparse默认True,默认截图第二个 7 trans = DictVectorizer(sparse=False) 8 # 进行特征抽取 9 datax = trans.fit_transform(data) 10 print(datax) 11 # 打印特征属性名字 12 print(trans.get_feature_names())
可以通过运行结果了解one-hot编码格式是什么样的:第一张图是3x4矩阵,可以看到提取出4个特征属性对应矩阵的4列,而data中有3个样本正好对应矩阵的3行,所以可以看出,形成的3x4矩阵,行表示样本,列表示4个特征属性,而1和0代表当前样本有没有这个特征属性。
在第二张图中表示的是图一的描述位置,(0,1)代表第0行第1列有值,1.0表示值为1,剩下的以此类推。当然,如果data中给的特征属性不是字符串,而是数字,那么在图一的矩阵中相应位置上就会显示数字,而图二中的位置表示的值就是给定的数字。
3、文本特征抽取
文本特征抽取和字典特征抽取实现代码基本相同,但其中,data应当是列表格式,下附代码和输出
1 # 文本特征抽取 2 def text_trans(): 3 data = ['理工大学 山西','理工大学 北京','清华大学 北京'] 4 trans = CountVectorizer() 5 datax = trans.fit_transform(data) 6 # CountVectorizer没有参数sparse,所以用toarray达到输出效果 7 print(datax.toarray()) 8 print(trans.get_feature_names())
文本特征抽取需要注意的一点是输入的数据,CountVectorizer()方法可以识别单个字、符号的无用字符串,它也可以根据标点符号、空格分割出特征属性,但它不可以将中文段落识别成一个个中文词组,所以应当配合jieba(同样是python的第三方库,专门用来处理中文)切词共同食用。
参考资料:https://blog.csdn.net/u013019338/article/details/87475669
https://www.cnblogs.com/mandy-study/p/7941365.html
https://blog.csdn.net/chuan403082010/article/details/85217891
推荐数据集网站(国内能上的):https://tianchi.aliyun.com/dataset/
https://www.kdnuggets.com/datasets/index.html
https://www.pkbigdata.com/common/cmptIndex.html