黑马程序员---三天快速入门Python机器学习(第一天)
機(jī)器學(xué)習(xí)入門(mén)
- 一、機(jī)器學(xué)習(xí)概述
- 1.1 人工智能概述
- 1.1.1 機(jī)器學(xué)習(xí)與人工智能、深度學(xué)習(xí)
- 1.1.2 機(jī)器學(xué)習(xí)、深度學(xué)習(xí)能做什么
- 1.1.3 人工智能階段課程安排
- 1.2 什么是機(jī)器學(xué)習(xí)
- 1.2.1 定義
- 1.2.2 解釋
- 1.2.3 數(shù)據(jù)集構(gòu)成
- 1.3 機(jī)器學(xué)習(xí)算法分類
- 1.3.1 總結(jié)
- 1.3.2 練習(xí)
- 1.3.3 機(jī)器學(xué)習(xí)算法分類
- 1.4 機(jī)器學(xué)習(xí)開(kāi)發(fā)流程
- 1.5 學(xué)習(xí)框架和資料介紹
- 1.5.1 機(jī)器學(xué)習(xí)庫(kù)與框架
- 1.5.2 書(shū)籍資料
- 1.5.3 提深內(nèi)功
- 二、特征工程
- 2.1 數(shù)據(jù)集
- 2.1.1 可用數(shù)據(jù)集
- 2.1.2 sklearn數(shù)據(jù)集
- 2.1.3 數(shù)據(jù)集的劃分
- 2.2 特征工程介紹
- 2.2.1 為什么需要特征工程
- 2.2.2 什么是特征工程
- 2.2.3 特征工程的位置與數(shù)據(jù)處理的比較
- 2.3 特征提取
- 2.3.1 什么是特征提取
- 2.3.2 字典特征提取
- 2.3.3 文本特征提取
- 2.4 特征預(yù)處理
- 2.4.1 什么是特征預(yù)處理
- 2.4.2 歸一化
- 2.4.3 標(biāo)準(zhǔn)化
- 2.5 特征降維
- 2.5.1 降維
- 2.5.2 降維的兩種方式
- 2.5.3 什么是特征選擇
- 2.6 主成分分析
- 2.6.1 什么是主成分分析(PCA)
- 2.6.2 案例:探究用戶對(duì)物品類別的喜好細(xì)分降維
- 2.7 機(jī)器學(xué)習(xí)第一天總結(jié)
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站:人工智能從入門(mén)到精通教程
一、機(jī)器學(xué)習(xí)概述
1.1 人工智能概述
1.1.1 機(jī)器學(xué)習(xí)與人工智能、深度學(xué)習(xí)
- 機(jī)器學(xué)習(xí)是人工智能的一個(gè)實(shí)現(xiàn)途徑
- 深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一種方法
1.1.2 機(jī)器學(xué)習(xí)、深度學(xué)習(xí)能做什么
- 傳統(tǒng)預(yù)測(cè):店鋪銷(xiāo)量預(yù)測(cè)、量化投資、廣告推薦、企業(yè)客戶分類、SQL語(yǔ)句安全檢測(cè)分類
- 圖像識(shí)別:街道交通標(biāo)志檢測(cè)、人臉識(shí)別
- 自然語(yǔ)言處理:文本分類、情感分析、自動(dòng)聊天、文本檢測(cè)
1.1.3 人工智能階段課程安排
1.2 什么是機(jī)器學(xué)習(xí)
1.2.1 定義
機(jī)器學(xué)習(xí)是從數(shù)據(jù)中自動(dòng)分析獲得模型,并利用模型對(duì)未知數(shù)據(jù)進(jìn)行預(yù)測(cè)
1.2.2 解釋
對(duì)經(jīng)驗(yàn)歸納總結(jié),對(duì)未知事物預(yù)測(cè)
1.2.3 數(shù)據(jù)集構(gòu)成
結(jié)構(gòu):特征值+目標(biāo)值
注:
- 對(duì)于每一行數(shù)據(jù)我們可以稱為樣本
- 有些數(shù)據(jù)集可以沒(méi)有目標(biāo)值
1.3 機(jī)器學(xué)習(xí)算法分類
第一種:
識(shí)別貓和狗:
特征值:圖片
目標(biāo)值:貓/狗**-類別**
分類問(wèn)題
第二種:
房屋價(jià)格預(yù)測(cè):
特征值:房屋的各個(gè)屬性信息
目標(biāo)值:房屋價(jià)格**-連續(xù)型的數(shù)據(jù)**
回歸問(wèn)題
第三種
特征值:人物的各個(gè)屬性信息
目標(biāo)值:無(wú)
無(wú)監(jiān)督學(xué)習(xí)
1.3.1 總結(jié)
1.3.2 練習(xí)
說(shuō)一下他們具體問(wèn)題分類:
1、預(yù)測(cè)明天的天氣是多少度? 回歸
2、依存明天是陰天還是晴天還是雨天?分類
3、人臉年齡預(yù)測(cè)?分類或回歸
4、人臉識(shí)別?分類
1.3.3 機(jī)器學(xué)習(xí)算法分類
監(jiān)督學(xué)習(xí):預(yù)測(cè)
- 定義:輸入數(shù)據(jù)是由輸入特征和目標(biāo)值所組成,函數(shù)的輸出可以是一個(gè)連續(xù)的值,稱為回歸;也可以是一個(gè)離散的值,稱為分類
- 分類:k-近鄰算法、貝葉斯分類、決策樹(shù)與隨機(jī)森林、邏輯回歸
- 回歸:線性回歸、嶺回歸
無(wú)監(jiān)督學(xué)習(xí)
- 定義:輸入數(shù)據(jù)是由輸入特征值組成
- 聚類:k-means
1.4 機(jī)器學(xué)習(xí)開(kāi)發(fā)流程
流程:
1)獲取數(shù)據(jù)
2)數(shù)據(jù)處理
3)特征工程
4)機(jī)器學(xué)習(xí)算法訓(xùn)練-得到模型
5)模型評(píng)估
6)應(yīng)用
1.5 學(xué)習(xí)框架和資料介紹
大部分復(fù)雜模型的算法設(shè)計(jì)都是算法工程師在做,而我們
- 分析很多的數(shù)據(jù)
- 分析具體的業(yè)務(wù)
- 應(yīng)用常見(jiàn)的算法
- 特征工程、調(diào)參、優(yōu)化
1.5.1 機(jī)器學(xué)習(xí)庫(kù)與框架
1.5.2 書(shū)籍資料
1.5.3 提深內(nèi)功
二、特征工程
2.1 數(shù)據(jù)集
目標(biāo)
- 知道數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集
- 會(huì)使用sklearn的數(shù)據(jù)集
2.1.1 可用數(shù)據(jù)集
Kaggle網(wǎng)址:https://www.kaggle.com/datasets
UCI數(shù)據(jù)集網(wǎng)址: http://archive.ics.uci.edu/ml/
scikit-learn網(wǎng)址: http://scikit-learn.org/stable/datasets/index.html#datasets
https://scikit-learn.org.cn/
scikit-learn特點(diǎn):
- 1、數(shù)據(jù)量小
- 2、方便學(xué)習(xí)
UCI特點(diǎn):
- 1、收錄了360個(gè)數(shù)據(jù)集
- 2、覆蓋科學(xué)、生活、經(jīng)濟(jì)等領(lǐng)域
- 3、數(shù)據(jù)集幾十萬(wàn)
Kaggle特點(diǎn):
- 1、大數(shù)據(jù)競(jìng)賽平臺(tái)
- 2、80萬(wàn)科學(xué)家
- 3、數(shù)據(jù)量巨大
1 Scikit-learn工具介紹
- Python語(yǔ)言的機(jī)器學(xué)習(xí)工具
- Scikit-learn包括許多知名的機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)
- Scikit-learn文檔完善,容易上手,豐富的API
- 目前穩(wěn)定版本0.19.1
2 安裝
pip install Scikit-learn -i https://pypi.douban.com/simple安裝好之后可以通過(guò)以下命令查看是否安裝成功
import sklearn注:安裝scikit-learn需要Numpy,Scipy等庫(kù)
3 Scikit-learn包含的內(nèi)容
2.1.2 sklearn數(shù)據(jù)集
1 scikit-learn數(shù)據(jù)集API介紹
- sklearn.datasets.load_*():獲取小規(guī)模數(shù)據(jù)集,數(shù)據(jù)包含在datasets里
- sklearn.datasets.fetch_*(data_home=None):獲取大規(guī)模數(shù)據(jù)集,需要從網(wǎng)絡(luò)上下載,函數(shù)的第一個(gè)參數(shù)是data_home,表示數(shù)據(jù)集下載的目錄,默認(rèn)是**~/scikit_learn_data/**
2 sklearn小數(shù)據(jù)集
- sklearn.datasets.load_iris():加載并返回鳶尾花數(shù)據(jù)集
- sklearn.datasets.load_boston():加載并返回波士頓房?jī)r(jià)數(shù)據(jù)集
3 sklearn大數(shù)據(jù)集
sklearn.datasets.fetch_20newsgroups(data=None, subset=‘train’)
- subset:‘train’或者’test’,‘a(chǎn)ll’,可選,選擇要加載的數(shù)據(jù)集
- 訓(xùn)練集的‘訓(xùn)練’,測(cè)試集的‘測(cè)試’,兩者的‘全部’
4 sklearn數(shù)據(jù)集的使用
sklearn數(shù)據(jù)集返回值介紹
load和fetch返回的數(shù)據(jù)類型datasets.base.Bunch(字典格式)
- data:特征數(shù)據(jù)數(shù)組,是[n_samples * n_features]的二維numpy.ndarry數(shù)組
- target:標(biāo)簽數(shù)組,是n_samples的一維numpy.ndarry數(shù)組
- DESCR:數(shù)據(jù)描述
- feature_names:特征名,新聞數(shù)據(jù),手寫(xiě)數(shù)字、回歸數(shù)據(jù)集沒(méi)有
- target_names:標(biāo)簽名
2.1.3 數(shù)據(jù)集的劃分
機(jī)器學(xué)習(xí)一般的數(shù)據(jù)集會(huì)劃分為兩個(gè)部分:
- 訓(xùn)練數(shù)據(jù):用于訓(xùn)練,構(gòu)建模型
- 測(cè)試數(shù)據(jù):在模型檢驗(yàn)時(shí)使用,用于評(píng)估模型是否有效
劃分比例:
- 訓(xùn)練集:70%、80%
- 測(cè)試集:30%、20%
數(shù)據(jù)集劃分api:sklearn.model_selection.train_test_split(arrays, *options)
- x 數(shù)據(jù)集的特征值
- y 數(shù)據(jù)集的標(biāo)簽值
- test_size測(cè)試集的大小,一般為float
- random_state隨機(jī)數(shù)種子,不同的種子會(huì)造成不同的隨機(jī)采樣結(jié)果。相同的種子采樣結(jié)果相同
- return訓(xùn)練集特征值,測(cè)試集特征值,訓(xùn)練集目標(biāo)值,測(cè)試集目標(biāo)值
2.2 特征工程介紹
2.2.1 為什么需要特征工程
數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個(gè)上限而已
2.2.2 什么是特征工程
特征工程是使用專業(yè)背景知識(shí)和技巧處理數(shù)據(jù),使得特征能在機(jī)器學(xué)習(xí)算法上發(fā)揮更好的作用的過(guò)程
意義:會(huì)直接影響機(jī)器學(xué)習(xí)的效果
2.2.3 特征工程的位置與數(shù)據(jù)處理的比較
- pandas:一個(gè)數(shù)據(jù)讀取非常方便以及基本的處理格式的工具
- sklearn:對(duì)于特征的處理提供了強(qiáng)大的接口
特征工程包含內(nèi)容:
- 特征抽取/特征提取
- 特征預(yù)處理
- 特征降維
什么是特征提取?
2.3 特征提取
2.3.1 什么是特征提取
1 將任意數(shù)據(jù)(如文本或圖像)轉(zhuǎn)換為可用于機(jī)器學(xué)習(xí)的數(shù)字特征
注:特征值是為了計(jì)算機(jī)更好的去理解數(shù)據(jù)
- 字典特征提取(特征離散化)
- 文本特征提取
- 圖像特征提取(深度學(xué)習(xí)再介紹)
2 特征提取API
sklearn.feature_extraction2.3.2 字典特征提取
作用:對(duì)字典數(shù)據(jù)進(jìn)行特征值化
sklearn.feature_extraction.DictVectorizer(sparse=True, …)
- DictVectorizer.fit_transform(X), X:字典或者包含字典的迭代器返回值,返回sparse矩陣
- DictVectorizer.inverse_transform(X), X:array數(shù)組或者sparse矩陣 返回值:轉(zhuǎn)換之前數(shù)據(jù)格式
- DictVectorizer.get_feature_names():返回類別名稱
1 應(yīng)用
對(duì)數(shù)據(jù)進(jìn)行特征提取:將類別轉(zhuǎn)換為one-hot編碼,節(jié)省內(nèi)存,提高下載效率
2.3.3 文本特征提取
單詞作為特征
作用:對(duì)文本數(shù)據(jù)進(jìn)行特征值化
sklearn.feature_extraction.text.CountVectorizer(stop_words=[]):返回詞頻矩陣
- CountVectorizer.fit_transform(X),X:文本或者包含文本字符串的可迭代對(duì)象,返回值:返回sparse矩陣
- CountVectorizer.inverse_transform(X),X:array數(shù)組或者sparse矩陣,返回值:轉(zhuǎn)換之前數(shù)據(jù)格
- CountVectorizer.get_feature_names():返回值:單詞列表
sklearn.feature_extraction.text.TfidVectorizer
1 應(yīng)用
英文文本分詞
停用詞:stop_words=[]
from sklearn.feature_extraction.text import CountVectorizerdef count_demo():"""文本特征抽取:CountVectorizer:return:"""data = ['life is short,i like like python','life is too long,i dislike python']# 1、實(shí)例化一個(gè)轉(zhuǎn)換器類transfer = CountVectorizer(stop_words=['is', 'too'])# 2、調(diào)用fit_transformdata_new = transfer.fit_transform(data)print("data_new:\n", data_new.toarray()) # toarray轉(zhuǎn)換為二維數(shù)組print("特征名字:\n", transfer.get_feature_names())return Noneif __name__ == "__main__":count_demo() data_new:[[0 1 2 0 1 1][1 1 0 1 1 0]] 特征名字:['dislike', 'life', 'like', 'long', 'python', 'short']中文文本分詞
注意:不支持單個(gè)中文詞!
這個(gè)方法是計(jì)算特征詞出現(xiàn)的個(gè)數(shù)的
例2
from sklearn.feature_extraction.text import CountVectorizer import jiebadef count_chinese_demo2():"""中文文本特征抽取,自動(dòng)分詞:return:"""data = ['一種還是一種今天很殘酷,明天更殘酷,后天很美好,但絕對(duì)大部分是死在明天晚上,所以每個(gè)人不要放棄今天。','我們看到的從很遠(yuǎn)星系來(lái)的光是在幾百萬(wàn)年之前發(fā)出的,這樣當(dāng)我們看到宇宙時(shí),我們是在看它的過(guò)去。','如果只用一種方式了解某件事物,他就不會(huì)真正了解它。了解事物真正含義的秘密取決于如何將其與我們所了解的事物相聯(lián)系。']data_new = []for sent in data:data_new.append(cut_word(sent))print(data_new)# 1、實(shí)例化一個(gè)轉(zhuǎn)換器類transfer = CountVectorizer()# 2、調(diào)用fit_transformdata_final = transfer.fit_transform(data_new)print("data_final:\n", data_final.toarray())print("特征名字:\n", transfer.get_feature_names())return Nonedef cut_word(text):"""進(jìn)行中文分詞:“我愛(ài)北京天安門(mén)” -> "我 愛(ài) 北京 天安門(mén)":param text::return:"""return ' '.join(jieba.cut(text))if __name__ == "__main__":count_chinese_demo2()#print(cut_word('我愛(ài)北京天安門(mén)')) ['一種 還是 一種 今天 很 殘酷 , 明天 更 殘酷 , 后天 很 美好 , 但 絕對(duì) 大部分 是 死 在 明天 晚上 , 所以 每個(gè) 人 不要 放棄 今天 。', '我們 看到 的 從 很 遠(yuǎn) 星系 來(lái) 的 光是在 幾百萬(wàn)年 之前 發(fā)出 的 , 這樣 當(dāng) 我們 看到 宇宙 時(shí) , 我們 是 在 看 它 的 過(guò)去 。', '如果 只用 一種 方式 了解 某件事 物 , 他 就 不會(huì) 真正 了解 它 。 了解 事物 真正 含義 的 秘密 取決于 如何 將 其 與 我們 所 了解 的 事物 相 聯(lián)系 。'] data_final:[[2 0 1 0 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 2 0 1 0 2 1 0 0 0 1 1 0 0 10][0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 3 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 01][1 1 0 0 4 2 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 2 1 0 0 1 0 00]] 特征名字:['一種', '不會(huì)', '不要', '之前', '了解', '事物', '今天', '光是在', '幾百萬(wàn)年', '發(fā)出', '取決于', '只用', '后天', '含義', '大部分', '如何', '如果', '宇宙', '我們', '所以', '放棄', '方式', '明天', '星系', '晚上', '某件事', '殘酷', '每個(gè)', '看到', '真正', '秘密', '絕對(duì)', '美好', '聯(lián)系', '過(guò)去', '還是', '這樣']關(guān)鍵詞:在某一個(gè)類別的文章中,出現(xiàn)的次數(shù)很多,但是在其他類別的文章當(dāng)中出現(xiàn)很少
5 Tf-idf文本特征提取
- Tf-idf的主要思想是:如果某個(gè)詞或短語(yǔ)在一篇文章中出現(xiàn)的概率高,并且在其他文章中很少出現(xiàn),則認(rèn)為此詞或者短語(yǔ)具有很好的類別區(qū)分能力,適合用來(lái)分來(lái)
- Tf-idf作用:用以評(píng)估一字詞對(duì)于一個(gè)文件集或一個(gè)語(yǔ)料庫(kù)中的其中一份文件的重要程度
這種方法是計(jì)算特征詞的重要程度的
TF-IDF:衡量重要程度
TF:詞頻
IDF:逆向文檔頻率,可以由總文件數(shù)目 / 包含該詞語(yǔ)之文件的數(shù)目,再將得到的商取以10為底的對(duì)數(shù)得到
2.4 特征預(yù)處理
2.4.1 什么是特征預(yù)處理
通過(guò)一些轉(zhuǎn)換函數(shù),將特征數(shù)據(jù)轉(zhuǎn)換成更適合算法模型的特征數(shù)據(jù)的過(guò)程
數(shù)值數(shù)據(jù)的無(wú)量綱化:
- 歸一化
- 標(biāo)準(zhǔn)化
2 特征預(yù)處理API
sklearn.preprocessing為什么要進(jìn)行歸一化/標(biāo)準(zhǔn)化?
- 特征的單位或者大小相差較大,或者某特征的方法相比其他的特征要大出幾個(gè)數(shù)量級(jí),容易影響(支配)目標(biāo)結(jié)果,使得一些算法無(wú)法學(xué)習(xí)到其它的特征
2.4.2 歸一化
1 定義
通過(guò)對(duì)原始的數(shù)據(jù)進(jìn)行變換把數(shù)據(jù)映射到(默認(rèn)為[0,1]之間)
2 公式
3 API
sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)…)
MinMaxScaler.fit_transform(X),X:numpy array格式的數(shù)據(jù)[n_samples,n_features],返回值:轉(zhuǎn)換后的形式相同的array
4 數(shù)據(jù)計(jì)算
import pandas as pd from sklearn.preprocessing import MinMaxScalerdef minmax_demo():"""歸一化:return:"""# 1、獲取數(shù)據(jù)data = pd.read_csv("datingTestSet2.txt", sep='\t')data = data.iloc[:, :3]print("data:\n", data)# 2、實(shí)例化一個(gè)轉(zhuǎn)換器類transform = MinMaxScaler()#transform = MinMaxScaler(feature_range=[2,3])# 3、調(diào)用fit_transformdata_new = transform.fit_transform(data)print("data_new:\n", data_new)return Noneif __name__ == "__main__":minmax_demo()
問(wèn)題:如果有異常值會(huì)有什么影響
異常值:最大值,最小值
5 歸一化總結(jié)
注意最大值最小值是變化的,另外,最大值與最小值非常容易受到異常值影響,
所以這種方法魯棒性較差,只適合傳統(tǒng)精確小數(shù)據(jù)場(chǎng)景
2.4.3 標(biāo)準(zhǔn)化
1 定義
通過(guò)對(duì)原始數(shù)據(jù)進(jìn)行變換把數(shù)據(jù)變換到均值為0,標(biāo)準(zhǔn)差為1的范圍內(nèi)
2 公式
- 對(duì)于歸一化來(lái)說(shuō):如果出現(xiàn)異常點(diǎn),影響了最大值和最小值,name結(jié)果顯然會(huì)發(fā)生改變
- 對(duì)于標(biāo)準(zhǔn)化來(lái)說(shuō),如果出現(xiàn)異常點(diǎn),由于具有一定數(shù)據(jù)量,少量的異常點(diǎn)對(duì)于平均值的影響不大,從而方差改變較小
4 代碼
sklearn.perprocessing.StandradScaler()
處理之后,對(duì)每列來(lái)說(shuō),所有數(shù)據(jù)都聚集在均值為0附近,標(biāo)準(zhǔn)差為1
StandardScaler.fit_transform(X),X;numpy array格式的數(shù)據(jù)[n_samples,n_features],返回值:轉(zhuǎn)化后的形狀相同的array
5 標(biāo)準(zhǔn)化總結(jié)
在已有樣本足夠多的情況下比較穩(wěn)定,適合現(xiàn)代嘈雜大數(shù)據(jù)場(chǎng)景
2.5 特征降維
2.5.1 降維
降維是指在某些限定條件下,降低隨機(jī)變量(特征)個(gè)數(shù),得到一組“不相關(guān)”主變量的過(guò)程
2.5.2 降維的兩種方式
- 特征選擇
- 主成分分析(可以理解一種特征提取的方式)
2.5.3 什么是特征選擇
1 定義
數(shù)據(jù)中包含冗余或相關(guān)變量(或稱特征、屬性、指標(biāo)等),旨在從原有特征中找出主要特征
2 方法
Filter過(guò)濾式:主要探究特征本身特點(diǎn)、特征與特征和目標(biāo)值之間關(guān)聯(lián)
- (1)方差選擇法:低方差特征過(guò)濾
- (2)相關(guān)系數(shù):特征與特征之間的相關(guān)程度
Embedded嵌入式:算法自動(dòng)選擇特征(特征與目標(biāo)值之間的關(guān)聯(lián))
- (1)決策樹(shù):信息熵、信息增益
- (2)正則化:L1,L2
- (3)深度學(xué)習(xí):卷積等
3 模塊
sklearn.feature_selection4 過(guò)濾式
4.1 低方差特征過(guò)濾
刪除低方差的一些特征
- 特征方差小:某個(gè)特征大多樣本的值比較相近
- 特征方差大:某個(gè)特征很多樣本的值都有差別
4.1.1 API
sklearn.feature_selection.VArianceThreshold(threshold=0.0)
刪除所有低方差特征
Variance.fit_transform(X),X:numpy array格式的數(shù)據(jù)[m_sample,n_features],返回值:訓(xùn)練集差異低于threadshold的特征將被刪除。默認(rèn)值是保留非零方差特征,即刪除所有樣本中具有相同值的特征
4.1.2 數(shù)據(jù)計(jì)算
from sklearn.feature_selection import VarianceThresholddef variance_demo():"""低方差特征過(guò)濾:return:"""# 1、獲取數(shù)據(jù)data = pd.read_csv('factor_returns.csv')print('data:\n', data)data = data.iloc[:,1:-2]print('data:\n', data)# 2、實(shí)例化一個(gè)轉(zhuǎn)換器類#transform = VarianceThreshold()transform = VarianceThreshold(threshold=10)# 3、調(diào)用fit_transformdata_new = transform.fit_transform(data)print("data_new\n", data_new, data_new.shape)return Noneif __name__ == "__main__":variance_demo()4.2 相關(guān)系數(shù)
皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient):反映變量之間相關(guān)關(guān)系密切程度的統(tǒng)計(jì)指標(biāo)
公式:
計(jì)算過(guò)程
4.2.3 特點(diǎn)
相關(guān)系數(shù)的值介于-1與+1之間,即-1<=r<=+1。其性質(zhì)如下:
- 當(dāng)r>0時(shí),表示兩變量正相關(guān);r<0時(shí),兩變量為負(fù)相關(guān)
- 當(dāng)|r|=1時(shí),表示兩變量為完全相關(guān);當(dāng)r=0時(shí),表示兩變量間無(wú)相關(guān)關(guān)系
- 當(dāng)0<|r|<1時(shí),表示兩變量存在一定程度的相關(guān)。且|r|越接近1,兩變量間線性關(guān)系越密切;|r|越接近0,表示兩變量的線性相關(guān)越弱
- 一般可按三級(jí)劃分:|r|<0.4為低度相關(guān);0.4<=|r|<0.7為顯著相關(guān);0.7<=|r|<1為高維線性相關(guān)
4.2.4 API
from scipy.stats import pearsonr- x:(N.)array_like
- y:(N.)array_like Returns:(Perason’s correlation coefficient, p-value)
相關(guān)系數(shù)看前面那個(gè)
如果特征與特征相關(guān)性很高:
1)選取其中一個(gè)
2)加權(quán)求和
3)主成分分析
2.6 主成分分析
2.6.1 什么是主成分分析(PCA)
定義:高維數(shù)據(jù)轉(zhuǎn)換為低維數(shù)據(jù)的過(guò)程,在此過(guò)程中可能會(huì)舍棄原有數(shù)據(jù)、創(chuàng)造新的變量
作用:是數(shù)據(jù)維數(shù)的壓縮,盡可能降低原數(shù)據(jù)的維數(shù)(復(fù)雜度),損失少量信息
應(yīng)用:回歸分析或者聚類分析中
1 計(jì)算案例理解
二維降到一維
2 代碼
sklearn.decomposition.PCA(n_components=None)
- 將數(shù)據(jù)分解為較低維度空間
- n_components:
-
- 小數(shù):表示保留百分之多少的信息
-
- 整數(shù):減少到多少特征
PCA.fit_transform(X),X:numpy array格式的數(shù)據(jù)[N_samples, n_features],返回值:轉(zhuǎn)換后指定維度的array
- 整數(shù):減少到多少特征
3 數(shù)據(jù)計(jì)算
from sklearn.decomposition import PCAdef pca_demo():"""PCA降維:return:"""data = [[2,8,4,5], [6,3,0,8], [5,4,9,1]]# 1、實(shí)例化一個(gè)轉(zhuǎn)換器類transform = PCA(n_components=2) # 4個(gè)特征降到2個(gè)特征# 2、調(diào)用fit_transformdata_new = transform.fit_transform(data)print("data_new\n", data_new)transform2 = PCA(n_components=0.95) # 保留95%的信息data_new2 = transform2.fit_transform(data)print("data_new2\n", data_new2)return Noneif __name__ == "__main__":pca_demo() data_new[[ 1.28620952e-15 3.82970843e+00][ 5.74456265e+00 -1.91485422e+00][-5.74456265e+00 -1.91485422e+00]] data_new2[[ 1.28620952e-15 3.82970843e+00][ 5.74456265e+00 -1.91485422e+00][-5.74456265e+00 -1.91485422e+00]]2.6.2 案例:探究用戶對(duì)物品類別的喜好細(xì)分降維
數(shù)據(jù):
1)order_prodects_prior.csv:訂單與商品信息
-
- 字段:order_id, product_id, add_to_cart_order, reordered
2)products.csv:商品信息
- 字段:order_id, product_id, add_to_cart_order, reordered
-
- 字段:product_id, product_name, aisle_id, department_id
3)order.csv:用戶的訂單信息
- 字段:product_id, product_name, aisle_id, department_id
-
- 字段:order_id, user_id, eval_set, order_number, …
4)aisles.csv:商品所屬具體物品類別
- 字段:order_id, user_id, eval_set, order_number, …
-
- 字段:aisle_id, aisle
處理成這個(gè)樣子
需求
1)需要將user_id和aisle放在同一個(gè)表中—合并
2)找到user_id和aisle----交叉表和透視表
2.7 機(jī)器學(xué)習(xí)第一天總結(jié)
總結(jié)
以上是生活随笔為你收集整理的黑马程序员---三天快速入门Python机器学习(第一天)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: figma下载_不用担心Figma中的间
- 下一篇: Retinex算法,图像色彩增强之pyt