二、特征工程
2.1 获取数据集
引用:
from sklearn.datasets import load_数据集名称(大)
from sklearn.datasets import fetch_数据集名称(小)
获取数据集:
数据集名称 = load_/ fetch_数据集名称()
数据集的返回值:
特征值data
目标值target
特征名feature_names
目标名target_names
数据描述DESCR
获取返回值:数据集.data\数据集["data"]
划分训练集&测试集:
引用:from sklearn.model_selection import train_test_split
划分:x_train,x_test,y_train,y_test =
train_test_split(数据集.特征值,数据集.目标值,test_size=?,random_state=?)
#训练集特征值,训练集目标值,测试集特征值,测试集特征值
#划分test_size在(0,1)之间
#随机数种子random_state,不同的随机数种子采样结果不同
2.2 特征提取
1.字典特征提取
引用:
from sklearn.feature_extraction import DictVectorizer
提取:
特征值:data=[{},{}......]
实例化:transfer = DictVectorizer(sparse = True/False)
调用:data_new = transfer.fit_transform(data)
#True:返回sparse矩阵 / False:返回one-hot编码
2.文本特征提取
引用:
from sklearn.feature_extraction.text import CounterVectorizer,TfidfVectorizer
英文提取:
data = ["......"]
实例化:transfer = CounterVectorizer/TfidfVectorizer(stop words=["...","..."])
调用:data_new = transfer.fit_transform(data)
# TfidfVectorizer可以反映关键词出现的频率
中文提取:
引入jieba:import jieba
定义分词函数:def cut_word(text):
return " ".join(list(jieba.cut(text)))
利用for循环建立分好词的列表:
data = ["......"]
data_1 = []
for a in data:
data_1.append(cut_word(a))
实例化+调用:
transfer = CounterVectorizer/TfidfVectorizer(stop words=["...","..."])
data_2 = transfer.fit_transform(data_1)
输出:
输出特征名:print( transfer.get_feature_names_out())
输出sparse矩阵:print(data.toarray())
2.3 特征预处理
1.归一化
引用:from sklearn.preprocessing import MinMaxScaler
读取数据:import pandas as pd
data = pd.read_csv("文件名")
实例化:transfer = MinMaxScaler(feature_range(a,b))
#feature_range(a,b)为归一化数据范围
调用:data_new = tramsfer.fit_transform(data)
2.标准化
把数据都变换到均值为0,标准差为1范围内
引用:from sklearn.preprocessing import StandardScaler
读取数据:import pandas as pd
data = pd.read_csv("文件名")
实例化:transfer = StandardScaler()
调用:data_new = tramsfer.fit_transform(data)
2.4 特征降维
1.特征选择
低方差特征过滤
引用:from sklearn.feature_selection import VarianceThreshold
读取数据:import pandas as pd
data = pd.read_csv("文件名")
实例化:transfer = VarianceThreshold(threshold=)
#threshold过滤方差数,默认为0
调用:data_new = tramsfer.fit_transform(data)
相关系数
引用:from spicy.stats import pearsonr
计算系数:r = pearsonr(data["参数1"],data["参数2"])
2.主成分分析PCA
引入:from sklearn.decomposition import PCA
传入数据:data = [......]
实例化:transfer = PCA(相关度/特征数)
#相关度在(0,1)之间,表示想要保留百分之多少的信息
#特征数为想要降到的特征数目
调用:data_new = tramsfer.fit_transform(data)