先推荐一款免费的笔记本,sublime_text
可以选择各种编程语言方便程序的编写和记录,如果用虚拟机登录mysql数据库也可以先在sublime上写sql语句,方便修改。
一、首先有两个基本问题:
1.1 机器学习是干什么的?
从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
1.2 哪些使用场景?
医疗、航空、物流、电商…等自动化需求的场景
二、数据集的构成和处理
2.1 数据集的构成:
数据集大多是csv格式文件,可以用pandas读取
(1)特征值+目标值(要干的事情),根据特征去判断目标,不是所有特征都需要,根据需要修改
(2)每一行是一个样本,每一列是一个特征
(3)有些数据集可以没有目标值(用非监督学习算法,典型代表聚类k-means)
获取特征值
li = 数据集
li.data
获取目标值
li.target
数据集进行分割
x_train,x_test,y_train,y_test =
sklearn.model_selection.train_test_split(li.data,li.target,test_size=0.25)
test_size= 比例 返回值包含训练集合测试集 用x_train代表训练集的特征值,x_target代表训练集的目标值
x_test测试集的特征值,y_test测试集的目标值
x:数据集的特征值
y:数据集的目标值
test_size:测试集的大小
2.2 对特征的处理
文本不能直接输入让机器计算,需要数据化,这就需要特征工程
对缺失值:数据转换
对重复值:不处理(机器学习中不需要去重)
特征工程包括:特征抽取、特征预处理、数据降维
2.2.1 特征抽取:
比如将文本转换成数字类型
文本、字符串转换成数字形式
对文本等数据进行特征值化,为了计算机更好的理解数据,只能理解数据
1.字典特征抽取 对字典进行特征值化 转成one-hot编码形式
API:sklearn.feature_extraction.DictVectorizer
#Vectorizer数字化
语法:DicVectorizer(sparse=True,...)
DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器 字典放在列表里
返回值:返回sparse矩阵 #scipy中的数据类型
DictVectorizer.get_feature_names()
返回类别名称
DictVectorizer.transform(X)
按照原先的标准转换
2.文本特征抽取
对文本等数据进行特征值化
API:sklearn.feature_extraction.text.TfidfVectorizer
语法:TfidfVectorizer(stop_words=None,...) #stop_words= 忽略哪些词
TfidfVectorizer.fit_transform(X)
X:文本或者包含文本字符串的可迭代对象
返回值:返回sparse矩阵
TfidfVectorizer.get_feature_names()
第一行特征名称
返回值:单词列表
得到的列表是每个词的重要性程度
2.2.2 特征预处理:
1.归一化
通过对原始数据进行变换把数据映射到(默认[0,1]之间)
公式: X’ =(x-min)/(max-min) X’’ = X’*(mx-mi)+mi