日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

机器算法1)

發(fā)布時(shí)間:2024/7/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器算法1) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SKLEARN


Scikit-learn與特征工程

“數(shù)據(jù)決定了機(jī)器學(xué)習(xí)的上限,而算法只是盡可能逼近這個(gè)上限”,這句話很好的闡述了數(shù)據(jù)在機(jī)器學(xué)習(xí)中的重要性。大部分直接拿過(guò)來(lái)的數(shù)據(jù)都是特征不明顯的、沒(méi)有經(jīng)過(guò)處理的或者說(shuō)是存在很多無(wú)用的數(shù)據(jù),那么需要進(jìn)行一些特征處理,特征的縮放等等,滿足訓(xùn)練數(shù)據(jù)的要求。

Scikit-learn

Python語(yǔ)言的機(jī)器學(xué)習(xí)工具
所有人都適用,可在不同的上下文中重用
基于NumPy、SciPy和matplotlib構(gòu)建
開(kāi)源、商業(yè)可用 - BSD許可
目前穩(wěn)定版本0.18
自2007年發(fā)布以來(lái),scikit-learn已經(jīng)成為最給力的Python機(jī)器學(xué)習(xí)庫(kù)(library)了。scikit-learn支持的機(jī)器學(xué)習(xí)算法包括分類,回歸,降維和聚類。還有一些特征提取(extracting features)、數(shù)據(jù)處理(processing data)和模型評(píng)估(evaluating models)的模塊。作為Scipy庫(kù)的擴(kuò)展,scikit-learn也是建立在Python的NumPy和matplotlib庫(kù)基礎(chǔ)之上。NumPy可以讓Python支持大量多維矩陣數(shù)據(jù)的高效操作,matplotlib提供了可視化工具,SciPy帶有許多科學(xué)計(jì)算的模型。 ????scikit-learn文檔完善,容易上手,豐富的API,使其在學(xué)術(shù)界頗受歡迎。開(kāi)發(fā)者用scikit-learn實(shí)驗(yàn)不同的算法,只要幾行代碼就可以搞定。scikit-learn包括許多知名的機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn),包括LIBSVM和LIBLINEAR。還封裝了其他的Python庫(kù),如自然語(yǔ)言處理的NLTK庫(kù)。另外,scikit-learn內(nèi)置了大量數(shù)據(jù)集,允許開(kāi)發(fā)者集中于算法設(shè)計(jì),節(jié)省獲取和整理數(shù)據(jù)集的時(shí)間。

數(shù)據(jù)的特征工程

從數(shù)據(jù)中抽取出來(lái)的對(duì)預(yù)測(cè)結(jié)果有用的信息,通過(guò)專業(yè)的技巧進(jìn)行數(shù)據(jù)處理,是的特征能在機(jī)器學(xué)習(xí)算法中發(fā)揮更好的作用。優(yōu)質(zhì)的特征往往描述了數(shù)據(jù)的固有結(jié)構(gòu)。 最初的原始特征數(shù)據(jù)集可能太大,或者信息冗余,因此在機(jī)器學(xué)習(xí)的應(yīng)用中,一個(gè)初始步驟就是選擇特征的子集,或構(gòu)建一套新的特征集,減少功能來(lái)促進(jìn)算法的學(xué)習(xí),提高泛化能力和可解釋性。
例如:你要查看不同地域女性的穿衣品牌情況,預(yù)測(cè)不同地域的穿衣品牌。如果其中含有一些男性的數(shù)據(jù),是不是要將這些數(shù)據(jù)給去除掉

特征工程的意義

更好的特征意味著更強(qiáng)的魯棒性
更好的特征意味著只需用簡(jiǎn)單模型
更好的特征意味著更好的結(jié)果

特征工程之特征處理

特征工程中最重要的一個(gè)環(huán)節(jié)就是特征處理,特征處理包含了很多具體的專業(yè)技巧
特征預(yù)處理
單個(gè)特征
歸一化
標(biāo)準(zhǔn)化
缺失值
多個(gè)特征
降維
PCA

特征工程之特征抽取與特征選擇

如果說(shuō)特征處理其實(shí)就是在對(duì)已有的數(shù)據(jù)進(jìn)行運(yùn)算達(dá)到我們目標(biāo)的數(shù)據(jù)標(biāo)準(zhǔn)。特征抽取則是將任意數(shù)據(jù)格式(例如文本和圖像)轉(zhuǎn)換為機(jī)器學(xué)習(xí)的數(shù)字特征。而特征選擇是在已有的特征中選擇更好的特征。后面會(huì)詳細(xì)介紹特征選擇主要區(qū)別于降維。

數(shù)據(jù)的來(lái)源與類型

大部分的數(shù)據(jù)都來(lái)自已有的數(shù)據(jù)庫(kù),如果沒(méi)有的話也可以交給很多爬蟲(chóng)工程師去采集,來(lái)提供。也可以來(lái)自平時(shí)的記錄,反正數(shù)據(jù)無(wú)處不在,大都是可用的。

數(shù)據(jù)的類型

按照機(jī)器學(xué)習(xí)的數(shù)據(jù)分類我們可以將數(shù)據(jù)分成:
標(biāo)稱型:標(biāo)稱型目標(biāo)變量的結(jié)果只在有限目標(biāo)集中取值,如真與假(標(biāo)稱型目標(biāo)變量主要用于分類)
數(shù)值型:數(shù)值型目標(biāo)變量則可以從無(wú)限的數(shù)值集合中取值,如0.100,42.001等 (數(shù)值型目標(biāo)變量主要用于回歸分析)
按照數(shù)據(jù)的本身分布特性
離散型
連續(xù)型
那么什么是離散型和連續(xù)型數(shù)據(jù)呢?首先連續(xù)型數(shù)據(jù)是有規(guī)律的,離散型數(shù)據(jù)是沒(méi)有規(guī)律的
離散變量是指其數(shù)值只能用自然數(shù)或整數(shù)單位計(jì)算的則為離散變量.例如,班級(jí)人數(shù)、進(jìn)球個(gè)數(shù)、是否是某個(gè)類別等等
連續(xù)型數(shù)據(jù)是指在指定區(qū)間內(nèi)可以是任意一個(gè)數(shù)值,例如,票房數(shù)據(jù)、花瓣大小分布數(shù)據(jù)

數(shù)據(jù)的特征抽取

現(xiàn)實(shí)世界中多數(shù)特征都不是連續(xù)變量,比如分類、文字、圖像等,為了對(duì)非連續(xù)變量做特征表述,需要對(duì)這些特征做數(shù)學(xué)化表述,因此就用到了特征提取. sklearn.feature_extraction提供了特征提取的很多方法

分類特征變量提取

我們將城市和環(huán)境作為字典數(shù)據(jù),來(lái)進(jìn)行特征的提取。
sklearn.feature_extraction.DictVectorizer(sparse = True)
將映射列表轉(zhuǎn)換為Numpy數(shù)組或scipy.sparse矩陣
sparse 是否轉(zhuǎn)換為scipy.sparse矩陣表示,默認(rèn)開(kāi)啟

方法

fit_transform(X,y)
應(yīng)用并轉(zhuǎn)化映射列表X,y為目標(biāo)類型
inverse_transform(X[, dict_type])
將Numpy數(shù)組或scipy.sparse矩陣轉(zhuǎn)換為映射列表

from sklearn.feature_extraction import DictVectorizer onehot = DictVectorizer() # 如果結(jié)果不用toarray,請(qǐng)開(kāi)啟sparse=False instances = [{'city': '北京','temperature':100},{'city': '上海','temperature':60}, {'city': '深圳','temperature':30}] X = onehot.fit_transform(instances).toarray() print(onehot.inverse_transform(X))

文本特征提取(只限于英文)

文本的特征提取應(yīng)用于很多方面,比如說(shuō)文檔分類、垃圾郵件分類和新聞分類。那么文本分類是通過(guò)詞是否存在、以及詞的概率(重要性)來(lái)表示。
(1)文檔的中詞的出現(xiàn)
數(shù)值為1表示詞表中的這個(gè)詞出現(xiàn),為0表示未出現(xiàn)
sklearn.feature_extraction.text.CountVectorizer()
將文本文檔的集合轉(zhuǎn)換為計(jì)數(shù)矩陣(scipy.sparse matrices)

方法

fit_transform(raw_documents,y)
學(xué)習(xí)詞匯詞典并返回詞匯文檔矩陣

from sklearn.feature_extraction.text import CountVectorizer content = ["life is short,i like python","life is too long,i dislike python"] vectorizer = CountVectorizer() print(vectorizer.fit_transform(content).toarray())

需要toarray()方法轉(zhuǎn)變?yōu)閚umpy的數(shù)組形式
溫馨提示:每個(gè)文檔中的詞,只是整個(gè)語(yǔ)料庫(kù)中所有詞,的很小的一部分,這樣造成特征向量的稀疏性(很多值為0)為了解決存儲(chǔ)和運(yùn)算速度的問(wèn)題,使用Python的scipy.sparse矩陣結(jié)構(gòu)

(2)TF-IDF表示詞的重要性

TfidfVectorizer會(huì)根據(jù)指定的公式將文檔中的詞轉(zhuǎn)換為概率表示。(樸素貝葉斯介紹詳細(xì)的用法)
class sklearn.feature_extraction.text.TfidfVectorizer()


方法

from sklearn.feature_extraction.text import TfidfVectorizer content = ["life is short,i like python","life is too long,i dislike python"] vectorizer = TfidfVectorizer(stop_words='english') print(vectorizer.fit_transform(content).toarray()) print(vectorizer.vocabulary_)

fit_transform(raw_documents,y)
學(xué)習(xí)詞匯和idf,返回術(shù)語(yǔ)文檔矩陣

數(shù)據(jù)的特征預(yù)處理

單個(gè)特征

(1)歸一化

歸一化首先在特征(維度)非常多的時(shí)候,可以防止某一維或某幾維對(duì)數(shù)據(jù)影響過(guò)大,也是為了把不同來(lái)源的數(shù)據(jù)統(tǒng)一到一個(gè)參考區(qū)間下,這樣比較起來(lái)才有意義,其次可以程序可以運(yùn)行更快。 例如:一個(gè)人的身高和體重兩個(gè)特征,假如體重50kg,身高175cm,由于兩個(gè)單位不一樣,數(shù)值大小不一樣。如果比較兩個(gè)人的體型差距時(shí),那么身高的影響結(jié)果會(huì)比較大,k-臨近算法會(huì)有這個(gè)距離公式。

min-max方法


常用的方法是通過(guò)對(duì)原始數(shù)據(jù)進(jìn)行線性變換把數(shù)據(jù)映射到[0,1]之間,變換的函數(shù)為
其中min是樣本中最小值,max是樣本中最大值,注意在數(shù)據(jù)流場(chǎng)景下最大值最小值是變化的,另外,最大值與最小值非常容易受異常點(diǎn)影響,所以這種方法魯棒性較差,只適合傳統(tǒng)精確小數(shù)據(jù)場(chǎng)景。

min-max自定義處理

這里我們使用相親約會(huì)對(duì)象數(shù)據(jù)在MatchData.txt,這個(gè)樣本時(shí)男士的數(shù)據(jù),三個(gè)特征,玩游戲所消耗時(shí)間的百分比、每年獲得的飛行??屠锍虜?shù)、每周消費(fèi)的冰淇淋公升數(shù)。然后有一個(gè) 所屬類別,被女士評(píng)價(jià)的三個(gè)類別,不喜歡、魅力一般、極具魅力。 首先導(dǎo)入數(shù)據(jù)進(jìn)行矩陣轉(zhuǎn)換處理

def data_matrix(file_name):"""將文本轉(zhuǎn)化為matrix:param file_name: 文件名:return: 數(shù)據(jù)矩陣"""fr=open(file_name)array_lines=fr.readlines()number_lines=len(array_lines)return_mat=np.zeros((number_lines,3))index=0for line in array_lines:line=line.strip()#Python strip() 方法用于移除字符串頭尾指定的字符(默認(rèn)為空格或換行符)或字符序列。list_line=line.split('\t')return_mat[index,:]=list_line[0:3]return return_mat


我們查看數(shù)據(jù)集會(huì)發(fā)現(xiàn),有的數(shù)值大到幾萬(wàn),有的才個(gè)位數(shù),同樣如果計(jì)算兩個(gè)樣本之間的距離時(shí),其中一個(gè)影響會(huì)特別大。也就是說(shuō)飛行里程數(shù)對(duì)于結(jié)算結(jié)果或者說(shuō)相親結(jié)果影響較大,但是統(tǒng)計(jì)的人覺(jué)得這三個(gè)特征同等重要,所以需要將數(shù)據(jù)進(jìn)行這樣的處理。
這樣每個(gè)特征任意的范圍將變成[0,1]的區(qū)間內(nèi)的值,或者也可以根據(jù)需求處理到[-1,1]之間,我們?cè)俣x一個(gè)函數(shù),進(jìn)行這樣的轉(zhuǎn)換

def feature_normal(data_set):"""特征歸一化:param data_set::return:"""#每列最小值min_vals=data_set.min(0)# 每列最大值max_vals = data_set.max(0)ranges=max_vals-min_valsnorm_data=np.zeros(np.shape(data_set))#得出行數(shù)m=data_set.shape[0]#1為列#矩陣相減norm_data=data_set-np.tile(min_vals,(m,1))#第一個(gè)參數(shù)為Y軸擴(kuò)大倍數(shù),第二個(gè)為X軸擴(kuò)大倍數(shù)。本例中X軸擴(kuò)大一倍便為不復(fù)制#矩陣相除norm_data=norm_data/np.tile(ranges,(m,1))return norm_data


(3)標(biāo)準(zhǔn)化




常用的方法是z-score標(biāo)準(zhǔn)化,經(jīng)過(guò)處理后的數(shù)據(jù)均值為0,標(biāo)準(zhǔn)差為1,處理方法是:

其中
μ\mu
μ是樣本的均值,
σ\sigma
σ是樣本的標(biāo)準(zhǔn)差,它們可以通過(guò)現(xiàn)有的樣本進(jìn)行估計(jì),在已有的樣本足夠多的情況下比較穩(wěn)定,適合嘈雜的數(shù)據(jù)場(chǎng)景
sklearn中提供了StandardScalar類實(shí)現(xiàn)列標(biāo)準(zhǔn)化

In [2]: import numpy as npIn [3]: X_train = np.array([[ 1., -1., 2.],[ 2., 0., 0.],[ 0., 1., -1.]])In [4]: from sklearn.preprocessing import StandardScalerIn [5]: std = StandardScaler()In [6]: X_train_std = std.fit_transform(X_train)In [7]: X_train_std Out[7]: array([[ 0. , -1.22474487, 1.33630621],[ 1.22474487, 0. , -0.26726124],[-1.22474487, 1.22474487, -1.06904497]])

(3)缺失值

由于各種原因,許多現(xiàn)實(shí)世界的數(shù)據(jù)集包含缺少的值,通常編碼為空白,NaN或其他占位符。然而,這樣的數(shù)據(jù)集與scikit的分類器不兼容,它們假設(shè)數(shù)組中的所有值都是數(shù)字,并且都具有和保持含義。使用不完整數(shù)據(jù)集的基本策略是丟棄包含缺失值的整個(gè)行和/或列。然而,這是以丟失可能是有價(jià)值的數(shù)據(jù)(即使不完整)的代價(jià)。更好的策略是估算缺失值,即從已知部分的數(shù)據(jù)中推斷它們。
(1)填充缺失值 使用sklearn.preprocessing中的Imputer類進(jìn)行數(shù)據(jù)的填充

class Imputer(sklearn.base.BaseEstimator, sklearn.base.TransformerMixin)"""用于完成缺失值的補(bǔ)充:param param missing_values: integer or "NaN", optional (default="NaN")丟失值的占位符,對(duì)于編碼為np.nan的缺失值,使用字符串值“NaN”:param strategy: string, optional (default="mean")插補(bǔ)策略如果是“平均值”,則使用沿軸的平均值替換缺失值如果為“中位數(shù)”,則使用沿軸的中位數(shù)替換缺失值如果“most_frequent”,則使用沿軸最頻繁的值替換缺失:param axis: integer, optional (default=0)插補(bǔ)的軸如果axis = 0,則沿列排列如果axis = 1,則沿行排列 >>> import numpy as np >>> from sklearn.preprocessing import Imputer >>> imp = Imputer(missing_values='NaN', strategy='mean', axis=0) >>> imp.fit([[1, 2], [np.nan, 3], [7, 6]]) Imputer(axis=0, copy=True, missing_values='NaN', strategy='mean', verbose=0) >>> X = [[np.nan, 2], [6, np.nan], [7, 6]] >>> print(imp.transform(X)) [[ 4. 2. ][ 6. 3.666...][ 7. 6. ]]

多個(gè)特征

降維

PCA(Principal component analysis),主成分分析。特點(diǎn)是保存數(shù)據(jù)集中對(duì)方差影響最大的那些特征,PCA極其容易受到數(shù)據(jù)中特征范圍影響,所以在運(yùn)用PCA前一定要做特征標(biāo)準(zhǔn)化,這樣才能保證每維度特征的重要性等同

class PCA(sklearn.decomposition.base)"""主成成分分析:param n_components: int, float, None or string這個(gè)參數(shù)可以幫我們指定希望PCA降維后的特征維度數(shù)目。最常用的做法是直接指定降維到的維度數(shù)目,此時(shí)n_components是一個(gè)大于1的整數(shù)。我們也可以用默認(rèn)值,即不輸入n_components,此時(shí)n_components=min(樣本數(shù),特征數(shù)):param whiten: bool, optional (default False)判斷是否進(jìn)行白化。所謂白化,就是對(duì)降維后的數(shù)據(jù)的每個(gè)特征進(jìn)行歸一化。對(duì)于PCA降維本身來(lái)說(shuō)一般不需要白化,如果你PCA降維后有后續(xù)的數(shù)據(jù)處理動(dòng)作,可以考慮白化,默認(rèn)值是False,即不進(jìn)行白化:param svd_solver:選擇一個(gè)合適的SVD算法來(lái)降維,一般來(lái)說(shuō),使用默認(rèn)值就夠了 >>> import numpy as np >>> from sklearn.decomposition import PCA >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) >>> pca = PCA(n_components=2) >>> pca.fit(X) PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,svd_solver='auto', tol=0.0, whiten=False)

數(shù)據(jù)的特征選擇

降維本質(zhì)上是從一個(gè)維度空間映射到另一個(gè)維度空間,特征的多少別沒(méi)有減少,當(dāng)然在映射的過(guò)程中特征值也會(huì)相應(yīng)的變化。舉個(gè)例子,現(xiàn)在的特征是1000維,我們想要把它降到500維。降維的過(guò)程就是找個(gè)一個(gè)從1000維映射到500維的映射關(guān)系。原始數(shù)據(jù)中的1000個(gè)特征,每一個(gè)都對(duì)應(yīng)著降維后的500維空間中的一個(gè)值。假設(shè)原始特征中有個(gè)特征的值是9,那么降維后對(duì)應(yīng)的值可能是3。而對(duì)于特征選擇來(lái)說(shuō),有很多方法:
Filter(過(guò)濾式):VarianceThreshold
Embedded(嵌入式):正則化、決策樹(shù)
Wrapper(包裹式)
其中過(guò)濾式的特征選擇后,數(shù)據(jù)本身不變,而數(shù)據(jù)的維度減少。而嵌入式的特征選擇方法也會(huì)改變數(shù)據(jù)的值,維度也改變。Embedded方式是一種自動(dòng)學(xué)習(xí)的特征選擇方法,后面講到具體的方法的時(shí)候就能理解了。
特征選擇主要有兩個(gè)功能:
(1)減少特征數(shù)量,降維,使模型泛化能力更強(qiáng),減少過(guò)擬合
(2)增強(qiáng)特征和特征值之間的理解

sklearn.feature_selection

去掉取值變化小的特征(刪除低方差特征)
VarianceThreshold 是特征選擇中的一項(xiàng)基本方法。它會(huì)移除所有方差不滿足閾值的特征。默認(rèn)設(shè)置下,它將移除所有方差為0的特征,即那些在所有樣本中數(shù)值完全相同的特征。

pca





字典數(shù)據(jù)提取

from sklearn.feature_extraction import DictVectorizerdef dictvec():"""字典數(shù)據(jù)抽取:return: None"""# 實(shí)例化dict=DictVectorizer(sparse=False)#調(diào)用fit_transformdata=dict.fit_transform([{'city': '北京','temperature': 100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature':30}])print(dict.get_feature_names())print(dict.inverse_transform(data))print(data)return None['city=上海', 'city=北京', 'city=深圳', 'temperature'] [{'city=北京': 1.0, 'temperature': 100.0}, {'city=上海': 1.0, 'temperature': 60.0}, {'city=深圳': 1.0, 'temperature': 30.0}] [[ 0. 1. 0. 100.][ 1. 0. 0. 60.][ 0. 0. 1. 30.]] def dictvec():"""字典數(shù)據(jù)抽取:return: None"""# 實(shí)例化dict=DictVectorizer()#調(diào)用fit_transformdata=dict.fit_transform([{'city': '北京','temperature': 100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature':30}])print(dict.get_feature_names())print(dict.inverse_transform(data))print(data)return None['city=上海', 'city=北京', 'city=深圳', 'temperature'] [{'city=北京': 1.0, 'temperature': 100.0}, {'city=上海': 1.0, 'temperature': 60.0}, {'city=深圳': 1.0, 'temperature': 30.0}](0, 1) 1.0(0, 3) 100.0(1, 0) 1.0(1, 3) 60.0(2, 2) 1.0(2, 3) 30.0

文本進(jìn)行特征化

from sklearn.feature_extraction.text import CountVectorizer def countevc():"""對(duì)文本進(jìn)行特征值化:return: None"""cv=CountVectorizer()data=cv.fit_transform(["人生 苦短,我 喜歡 python", "人生漫長(zhǎng),不用 python"])print(cv.get_feature_names())print(data.toarray())return None['python', '不用', '人生', '人生漫長(zhǎng)', '喜歡', '苦短'] [[1 0 1 0 1 1][1 1 0 1 0 0]]

中文分詞

import jieba def cutword():con1=jieba.cut("今天很殘酷,明天更殘酷,后天很美好,但絕對(duì)大部分是死在明天晚上,所以每個(gè)人不要放棄今天。")con2 = jieba.cut("我們看到的從很遠(yuǎn)星系來(lái)的光是在幾百萬(wàn)年之前發(fā)出的,這樣當(dāng)我們看到宇宙時(shí),我們是在看它的過(guò)去。")con3 = jieba.cut("如果只用一種方式了解某樣事物,你就不會(huì)真正了解它。了解事物真正含義的秘密取決于如何將其與我們所了解的事物相聯(lián)系。")#轉(zhuǎn)換成列表content1=list(con1)content2 = list(con2)content3 = list(con3)#轉(zhuǎn)換成字符串c1 = ' '.join(content1)c2 = ' '.join(content2)c3 = ' '.join(content3)print(c1,c2,c3)return c1, c2 ,c3

中文特征值化

def hanzivec():"""中文特征值化:return: None"""c1,c2,c3=cutword()print(c1,c2,c3)cv=CountVectorizer()data=cv.fit_transform([c1,c2,c3])print(cv.get_feature_names())print(data.toarray())return None今天 很 殘酷 , 明天 更 殘酷 , 后天 很 美好 , 但 絕對(duì) 大部分 是 死 在 明天 晚上 , 所以 每個(gè) 人 不要 放棄 今天 。 我們 看到 的 從 很 遠(yuǎn) 星系 來(lái) 的 光是在 幾百萬(wàn)年 之前 發(fā)出 的 , 這樣 當(dāng) 我們 看到 宇宙 時(shí) , 我們 是 在 看 它 的 過(guò)去 。 如果 只用 一種 方式 了解 某樣 事物 , 你 就 不會(huì) 真正 了解 它 。 了解 事物 真正 含義 的 秘密 取決于 如何 將 其 與 我們 所 了解 的 事物 相 聯(lián)系 。 ['一種', '不會(huì)', '不要', '之前', '了解', '事物', '今天', '光是在', '幾百萬(wàn)年', '發(fā)出', '取決于', '只用', '后天', '含義', '大部分', '如何', '如果', '宇宙', '我們', '所以', '放棄', '方式', '明天', '星系', '晚上', '某樣', '殘酷', '每個(gè)', '看到', '真正', '秘密', '絕對(duì)', '美好', '聯(lián)系', '過(guò)去', '這樣'] [[0 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 0][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 1][1 1 0 0 4 3 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 0]]

中文分割特征處理

from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer def tfidfvec():"""中文特征值化:return: None"""c1,c2,c3=cutword()print(c1,c2,c3)tf=TfidfVectorizer()data=tf.fit_transform([c1,c2,c3])print(tf.get_feature_names())print(data.toarray())return None今天 很 殘酷 , 明天 更 殘酷 , 后天 很 美好 , 但 絕對(duì) 大部分 是 死 在 明天 晚上 , 所以 每個(gè) 人 不要 放棄 今天 。 我們 看到 的 從 很 遠(yuǎn) 星系 來(lái) 的 光是在 幾百萬(wàn)年 之前 發(fā)出 的 , 這樣 當(dāng) 我們 看到 宇宙 時(shí) , 我們 是 在 看 它 的 過(guò)去 。 如果 只用 一種 方式 了解 某樣 事物 , 你 就 不會(huì) 真正 了解 它 。 了解 事物 真正 含義 的 秘密 取決于 如何 將 其 與 我們 所 了解 的 事物 相 聯(lián)系 。 今天 很 殘酷 , 明天 更 殘酷 , 后天 很 美好 , 但 絕對(duì) 大部分 是 死 在 明天 晚上 , 所以 每個(gè) 人 不要 放棄 今天 。 我們 看到 的 從 很 遠(yuǎn) 星系 來(lái) 的 光是在 幾百萬(wàn)年 之前 發(fā)出 的 , 這樣 當(dāng) 我們 看到 宇宙 時(shí) , 我們 是 在 看 它 的 過(guò)去 。 如果 只用 一種 方式 了解 某樣 事物 , 你 就 不會(huì) 真正 了解 它 。 了解 事物 真正 含義 的 秘密 取決于 如何 將 其 與 我們 所 了解 的 事物 相 聯(lián)系 。 ['一種', '不會(huì)', '不要', '之前', '了解', '事物', '今天', '光是在', '幾百萬(wàn)年', '發(fā)出', '取決于', '只用', '后天', '含義', '大部分', '如何', '如果', '宇宙', '我們', '所以', '放棄', '方式', '明天', '星系', '晚上', '某樣', '殘酷', '每個(gè)', '看到', '真正', '秘密', '絕對(duì)', '美好', '聯(lián)系', '過(guò)去', '這樣'] [[0. 0. 0.21821789 0. 0. 0.0.43643578 0. 0. 0. 0. 0.0.21821789 0. 0.21821789 0. 0. 0.0. 0.21821789 0.21821789 0. 0.43643578 0.0.21821789 0. 0.43643578 0.21821789 0. 0.0. 0.21821789 0.21821789 0. 0. 0. ][0. 0. 0. 0.2410822 0. 0.0. 0.2410822 0.2410822 0.2410822 0. 0.0. 0. 0. 0. 0. 0.24108220.55004769 0. 0. 0. 0. 0.24108220. 0. 0. 0. 0.48216441 0.0. 0. 0. 0. 0.2410822 0.2410822 ][0.15698297 0.15698297 0. 0. 0.62793188 0.470948910. 0. 0. 0. 0.15698297 0.156982970. 0.15698297 0. 0.15698297 0.15698297 0.0.1193896 0. 0. 0.15698297 0. 0.0. 0.15698297 0. 0. 0. 0.313965940.15698297 0. 0. 0.15698297 0. 0. ]]

歸一化處理

from sklearn.preprocessing import MinMaxScalerdef mm():"""歸一化處理:return: NOne"""mm=MinMaxScaler()data=mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])print(data)return None[[1. 0. 0. 0. ][0. 1. 1. 0.83333333][0.5 0.5 0.6 1. ]]

標(biāo)準(zhǔn)化

from sklearn.preprocessing import MinMaxScaler,StandardScaler def stand():"""標(biāo)準(zhǔn)化縮放:return:"""std=StandardScaler()data=std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])print(data)return None[[-1.06904497 -1.35873244 0.98058068][-0.26726124 0.33968311 0.39223227][ 1.33630621 1.01904933 -1.37281295]]

缺失值處理

from sklearn.preprocessing import MinMaxScaler,StandardScaler,Imputer import numpy as npdef im():"""缺失值處理:return:NOne"""# NaN, nanim=Imputer(missing_values='NaN',strategy='mean',axis=0)data=im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])print(data)return None[[1. 2.] C:\Users\HP\Anaconda3\lib\site-packages\sklearn\utils\deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.[4. 3.]warnings.warn(msg, category=DeprecationWarning)[7. 6.]]

特征選擇 刪除低方差

from sklearn.feature_selection import VarianceThresholddef var():"""特征選擇-刪除低方差的特征:return: None"""var=VarianceThreshold(threshold=1.0)data= var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])print(data)return None[[0][4][1]]

PCA

def pca():"""主成分分析進(jìn)行特征降維:return: None"""pca=PCA(n_components=0.9)data=pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])print(data)return None [[ 1.22879107e-15 3.82970843e+00][ 5.74456265e+00 -1.91485422e+00][-5.74456265e+00 -1.91485422e+00]]

總結(jié)

以上是生活随笔為你收集整理的机器算法1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。