机器学习简介
1 机器学习
1.1 数据集
数据集 = 特征值 + 目标值
1.2 算法分类
- 监督学习
- 目标值:类别 - 分类问题
- 目标值:连续数据 - 回归问题
- 无监督学习:无目标值
1.3 机器学习流程
1.4 Scikit-learn
pip3 install Scikit-learn==0.19.1
2 sklearn 特征工程
2.1 scikit-learn数据集API
2.2 数据集
2.2.1 小数据集
2.2.2 大数据集
2.2.3 返回值
# 导入鸢尾花
from sklearn.datasets import load_iris
2.2.4 数据集的划分
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size = 0.2, random_state = 22)
print(f"测试集:{x_train}, 大小:{x_train.shape}")
2.3 特征工程 Feature Engineering
- sklearn 特征工程
- pandas 数据清洗,数据处理
2.3.1 特征抽取API
sklearn.feature_extraction
2.3.2 字典的特征提取
from sklearn.feature_extraction import DictVectorizer
def dict_demo():
"""字典特征抽取"""
data = [{
'city': '北京', 'temperayure': 100},
{
'city': '上海', 'temperayure': 60 },
{
'city': '深圳', 'temperayure': 30 }]
# 1.实例化一个转换器类
transfer = DictVectorizer(sparse= False)
# 2.调用fit_transform()
data_new = transfer.fit_transform(data) # data_new.toarray()
print("数据:", data_new)
print("特征名字:", transfer.get_feature_names())
return None
- 应用场景
- 特征比较多
- 1 数据集的特征,转化成字典类型
- 2 DictVectorizer 转换
- 特征比较多
2.3.3 文本的特征提取 -1
- 特征:句子、短语、单词
from sklearn.feature_extraction.text import CountVectorizer
stop_words 停用词
**sparse.toarray() ** — sparse包含变成数组的方法,字典/文本提取均可使用
- 中文分词
def dict_cn_demo():
"""
"我爱北京天安门" -> "我 爱 北京 天安门"
"""
text = "我爱北京天安门"
a = jieba.cut(text) # 返回迭代器
b = list(a) # ['我', '爱', '北京', '天安门']
c = " ".join(b) # "我 爱 北京 天安门" str
print(c)
return None
def cut_CN(text):
"""
"我爱北京天安门" -> "我 爱 北京 天安门"
"""
return " ".join(list(jieba(text)))
2.3.4 文本的特征提取 -2
from sklearn.feature_extraction.text import TfidfVectorizer
2.4 特征预处理
sklearn.preprocessing
2.4.1 归一化
鲁棒性较差,最大值/最小值为Nan容易出现问题
from sklearn.preprocessing import MinMaxScaler
def minmax_demo():
"""
归一化
"""
# 1.获取数据
# data.to_csv("data.csv", index= False)
data = pd.read_csv("data.csv")
data = data.iloc[:, :3]
print("data:", data)
# 2.获取转换器类
transfer = MinMaxScaler(feature_range= (0, 1))
# 3.fit_transform
data_new = transfer.fit_transform(data)
print("data_new", data_new)
return None
2.4.2 标准化
# 适合大样本
from sklearn.preprocessing import StandardScaler
def stand_demo():
"""
标准化
"""
# 1.获取数据
data = pd.read_csv("data.csv")
data = data.iloc[:, :3]
print("data:", data)
# 2.获取转换器类
transfer = StandardScaler()
# 3.fit_transform
data_new = transfer.fit_transform(data)
print("data_new", data_new)
return None
2.5 特征降维
2.5.1 特征降维
from sklearn.feature_selection import VarianceThreshold