机器学习day01——笔记

机器学习

1、机器学习分类:

①监督学习:

​ 分类问题:特征值——目标值(类别)

​ 回归问题:目标值为连续数值

②无监督学习:无目标值

2、数据集

2.1、数据集:

​ 可用数据集搜索:kaggle、UCI、scikit-learn

2.2、Scikit-learn数据集的使用:

​ ①获取小规模数据集:sklearn.datasets.load_*()

​ ②获取大规模数据集:sklearn.datasets.fetch_*(data_home=None,subset=‘tarin’) #subset为选择train\test\all

2.3、数据集返回值为字典格式 datasets.base.Bunch:

  • ​ ①data:特征数据数组————特征值
  • ​ ②target:标签数组————目标值
  • ​ ③DESCR:数据描述(说明文档)
  • ​ ④feature_names:特征名(特征值的名字,即每个值代表什么意思)
  • ​ ⑤target_names:标签名(目标值的名字)

​ 调用方式:① dict[“key”] = value ②bunch.key = value

2.4、数据集的划分

​ 1、训练集(80%)、测试集(20%)

​ 2、sklearn.model_selection.train_test_split(arrays,*options)

  • ​ feature:数据集的特征值——data
  • ​ lable:数据的标签值——target
  • ​ test_size: 测试集的大小 默认0.25
  • ​ random_state :随机数种子
  • ​ return :训练集特征值,测试集特征值,训练集目标值,测试集目标值
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

def datastes_demo():
  iris=load_iris()
  feature_train,feature_test,label_train,label_test=train_test_split(iris.data,iris.target,test_size=0.2)

3、特征工程

​ 特征工程决定机器学习上限

3.1、特征提取

​ 特征提取API:sklearn.feature_extraction

字典特征提取(one-hot编码)

sklearn.feature_extraction.DictVectorzer(sparse=True…)

  • DictVectorzer.fit_transform(data):
  • DictVectorzer.inverse_transform(data)
  • DictVectorzer.get_feature_name():
from sklearn.feature_extraction import DictVectorizer

def dict_demo():
    data=[{"city":'北京',"temperature":'100'},
          {"city":'上海',"temperature":'60'},
    transfer=DictVectorizer()	#实例化
    data_new=transfer.fit_transform(data)	#返回默认为稀疏矩阵(本质是one-hot编码)
    print(data_new)

文本特征提取

①CountVectorizer

sklearn.feature_extraction.text.CountVectorizer(stop_words=[]) 返回词频矩阵

  • CountVectorizer.fit_transform(data):
  • CountVectorizer.inverse_transform(data)
  • CountVectorizer.get_feature_name():

中文文字特征提取可用jieba分词 import jieba

import jieba
def cut_ch_demo(text):
    result=" ".join(list(jieba.lcut(text)))
    return result
②Tf-idf文本特征提取

sklearn.feature_extraction.text.TfidfVectorizer(stop_words=[])

返回词的权重矩阵

  • TfidfVectorizer.fit_transform(data):
  • TfidfVectorizer.inverse_transform(data):
  • TfidfVectorizer.get_feature_name():

3.2、特征预处理(归一化、标准化)

特征预处理API:sklearn.preprocessing

归一化(异常值影响)

sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)…)

  • MinMaxScaler.fit_transform(data)
  • 返回值:转换后的形状相同的array

标准化(样本多时稳定)

sklearn.preprocessing.StandarScaler(feature_range=(0,1)…)

  • StandarScaler.fit_transform(data)
  • 返回值:转换后的形状相同的array

3.3、特征降维

降低特征个数,使特征与特征不相关。

特征选择

Filter过滤式:方差选择、相关系数

低方差特征过滤

模块:sklearn.feature_selection

sklearn.feature_selection.VarianceThreshold(threshold=0.0)

  • Variance.fit_transform(data):
  • 返回值:转换后的形状相同的array
def variance_demo():
	
    return None

相关系数(皮尔逊)
r ( X , Y ) = C o v ( X , Y ) V a r ( X ) V a r ( Y ) r(X,Y)={{Cov(X,Y)}\over\sqrt{Var(X)Var(Y)}} r(X,Y)=Var(X)Var(Y) Cov(X,Y)
|r|约接近0,表示相关性越弱

模块:from scipy.stats import pearsonr

from scipy.stats import pearsonr
r = pearsonr(datax,datay)
#返回值为(相关系数,P值——即显著水平)

相关性高时,选取其中一个或加权求和

Embedded嵌入式:决策树、正则化、深度

主成分分析

数据维数压缩

找到一个直线,通过一个矩阵运算得出主成分的结果

模块:sklearn.decomposition.PCA(n_components=None)

  • n_components:小数表示保留百分之多少的信息,整数表示减少到多少特征
  • PCA.fit_transdorm(X)
  • 返回值:转换后指定维度的array

项目实例(数据降维):

import pandas as pd
from sklearn.decomposition import PCA

order_products = pd.read_csv("./source/order_products__prior.csv")
product = pd.read_csv("./source/products.csv")
aisles = pd.read_csv("./source/aisles.csv")
orders = pd.read_csv("./source/orders.csv")

tab1 = pd.merge(aisles, product, on=["aisle_id", "aisle_id"])
tab2 = pd.merge(tab1, order_products, on=["product_id", "product_id"])
tab3 = pd.merge(tab2, orders, on=["order_id", "order_id"])

tab4 = pd.crosstab( tab3["user_id"],tab3["aisle"])
print(tab4.shape)

# 实例化
transfer = PCA(n_components=0.95)
# 调用方法
data_new = transfer.fit_transform(tab4)
print(data_new)
print(data_new.shape)

项目实例(数据降维)代码中的四个数据文件见百度网盘:

链接:https://pan.baidu.com/s/1k9QKTdwazpcOuTV1sucQfg 
提取码:yd2k

你可能感兴趣的:(机器学习,sklearn,python)