最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

講清楚fit_transform()和transform()的區(qū)別及說明

 更新時(shí)間:2024年02月22日 09:22:03   作者:微電子學(xué)與固體電子學(xué)-俞馳  
這篇文章主要介紹了講清楚fit_transform()和transform()的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

fit_transform()和transform()的區(qū)別

網(wǎng)上抄來抄去都是一個(gè)意思,

fit_transform是fit和transform的組合

我們知道fit(x,y)在新手入門的例子中比較多,但是這里的fit_transform(x)的括號(hào)中只有一個(gè)參數(shù),這是為什么呢?

fit(x,y)傳兩個(gè)參數(shù)的是有監(jiān)督學(xué)習(xí)的算法,fit(x)傳一個(gè)參數(shù)的是無監(jiān)督學(xué)習(xí)的算法,比如降維、特征提取、標(biāo)準(zhǔn)化

解釋為什么出來fit_transform()這個(gè)東西

下面是重點(diǎn):

fit和transform沒有任何關(guān)系,僅僅是數(shù)據(jù)處理的兩個(gè)不同環(huán)節(jié),之所以出來這么個(gè)函數(shù)名,僅僅是為了寫代碼方便,

所以會(huì)發(fā)現(xiàn)transform()和fit_transform()的運(yùn)行結(jié)果是一樣的。

注意:

運(yùn)行結(jié)果一模一樣不代表這兩個(gè)函數(shù)可以互相替換,絕對(duì)不可以!??!

  • transform函數(shù)是一定可以替換為fit_transform函數(shù)的
  • fit_transform函數(shù)不能替換為transform函數(shù)?。?!理由解釋如下:

 sklearn里的封裝好的各種算法都要fit、然后調(diào)用各種API方法,transform只是其中一個(gè)API方法,所以當(dāng)你調(diào)用除transform之外的方法,必須要先fit,為了通用的寫代碼,還是分開寫比較好 

也就是說,這個(gè)fit相對(duì)于transform而言是沒有任何意義的,但是相對(duì)于整個(gè)代碼而言,fit是為后續(xù)的API函數(shù)服務(wù)的,所以fit_transform不能改寫為transform。

下面的代碼用來舉例示范

數(shù)據(jù)集是代碼自動(dòng)從網(wǎng)上下載的

如果把下面的乳腺癌相關(guān)的機(jī)器學(xué)習(xí)代碼中的fit_transform改為transform,編譯器就會(huì)報(bào)錯(cuò)。

(下面給出的是無錯(cuò)誤的代碼)

# coding: utf-8
# 導(dǎo)入pandas與numpy工具包。
import pandas as pd
import numpy as np
 
# 創(chuàng)建特征列表。
column_names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape', 'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin', 'Normal Nucleoli', 'Mitoses', 'Class']
# 使用pandas.read_csv函數(shù)從互聯(lián)網(wǎng)讀取指定數(shù)據(jù)。
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', names = column_names )
 
# 將?替換為標(biāo)準(zhǔn)缺失值表示。
data = data.replace(to_replace='?', value=np.nan)
# 丟棄帶有缺失值的數(shù)據(jù)(只要有一個(gè)維度有缺失)。
data = data.dropna(how='any')
 
# 輸出data的數(shù)據(jù)量和維度。
data.shape
 
 
# In[2]:
 
 
# 使用sklearn.cross_valiation里的train_test_split模塊用于分割數(shù)據(jù)。
from sklearn.cross_validation import train_test_split
 
# 隨機(jī)采樣25%的數(shù)據(jù)用于測(cè)試,剩下的75%用于構(gòu)建訓(xùn)練集合。
X_train, X_test, y_train, y_test = train_test_split(data[column_names[1:10]], data[column_names[10]], test_size=0.25, random_state=33)
# print "data[column_names[10]]",data[column_names[10]]
 
 
# 查驗(yàn)訓(xùn)練樣本的數(shù)量和類別分布。
y_train=pd.Series(y_train)
y_train.value_counts()
 
# 查驗(yàn)測(cè)試樣本的數(shù)量和類別分布。
y_test=pd.Series(y_test)
y_test.value_counts()
 
 
# 從sklearn.preprocessing里導(dǎo)入StandardScaler。
from sklearn.preprocessing import StandardScaler
# 從sklearn.linear_model里導(dǎo)入LogisticRegression與SGDClassifier。
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import SGDClassifier
 
 
 
 
 
 
 
#標(biāo)準(zhǔn)化數(shù)據(jù),保證每個(gè)維度的特征數(shù)據(jù)方差為1,均值為0。使得預(yù)測(cè)結(jié)果不會(huì)被某些維度過大的特征值而主導(dǎo)。
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)
 
#
 
# 初始化LogisticRegression與SGDClassifier。
lr = LogisticRegression()
sgdc = SGDClassifier()
 
# 調(diào)用LogisticRegression中的fit函數(shù)/模塊用來訓(xùn)練模型參數(shù)。
lr.fit(X_train, y_train)
# 使用訓(xùn)練好的模型lr對(duì)X_test進(jìn)行預(yù)測(cè),結(jié)果儲(chǔ)存在變量lr_y_predict中。
lr_y_predict = lr.predict(X_test)
 
# 調(diào)用SGDClassifier中的fit函數(shù)/模塊用來訓(xùn)練模型參數(shù)。
sgdc.fit(X_train, y_train)
# 使用訓(xùn)練好的模型sgdc對(duì)X_test進(jìn)行預(yù)測(cè),結(jié)果儲(chǔ)存在變量sgdc_y_predict中。
sgdc_y_predict = sgdc.predict(X_test)
 
 
 
 
# 從sklearn.metrics里導(dǎo)入classification_report模塊。
from sklearn.metrics import classification_report
 
# 使用邏輯斯蒂回歸模型自帶的評(píng)分函數(shù)score獲得模型在測(cè)試集上的準(zhǔn)確性結(jié)果。
print ("Accuracy of LR Classifier:", lr.score(X_test, y_test))
# 利用classification_report模塊獲得LogisticRegression其他三個(gè)指標(biāo)的結(jié)果。
print (classification_report(y_test, lr_y_predict, target_names=['Benign', 'Malignant']))
 
 
 
# 使用隨機(jī)梯度下降模型自帶的評(píng)分函數(shù)score獲得模型在測(cè)試集上的準(zhǔn)確性結(jié)果。
print 'Accuarcy of SGD Classifier:', sgdc.score(X_test, y_test)
# 利用classification_report模塊獲得SGDClassifier其他三個(gè)指標(biāo)的結(jié)果。
print classification_report(y_test, sgdc_y_predict, target_names=['Benign', 'Malignant'])
 
 
 

會(huì)得到報(bào)錯(cuò)信息:

AttributeError: 'StandardScaler' object has no attribute 'mean_'

有的版本報(bào)錯(cuò)更加直接:

sklearn.exceptions.NotFittedError: This StandardScaler instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.

原因就是因?yàn)榇a中的fit_transform函數(shù)被改為了transform函數(shù)。

所以總結(jié)

fit_transform與transform運(yùn)行結(jié)果一致,但是fit與transform無關(guān),只是數(shù)據(jù)處理的兩個(gè)環(huán)節(jié),fit是為了程序的后續(xù)函數(shù)transform的調(diào)用而服務(wù)的,是個(gè)前提條件。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python學(xué)習(xí)筆記之列表和成員運(yùn)算符及列表相關(guān)方法詳解

    Python學(xué)習(xí)筆記之列表和成員運(yùn)算符及列表相關(guān)方法詳解

    這篇文章主要介紹了Python學(xué)習(xí)筆記之列表和成員運(yùn)算符及列表相關(guān)方法,結(jié)合實(shí)例形式詳細(xì)分析了Python列表相關(guān)的概念、原理、成員函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • Django中l(wèi)ogin_required裝飾器的深入介紹

    Django中l(wèi)ogin_required裝飾器的深入介紹

    這篇文章主要給大家介紹了關(guān)于Django中l(wèi)ogin_required裝飾器的使用方法,并給大家進(jìn)行了實(shí)例借鑒,利用@login_required實(shí)現(xiàn)Django用戶登陸訪問限制,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • python查找特定名稱文件并按序號(hào)、文件名分行打印輸出的方法

    python查找特定名稱文件并按序號(hào)、文件名分行打印輸出的方法

    這篇文章主要介紹了python查找特定名稱文件并按序號(hào)、文件名分行打印輸出的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python3.6使用tkinter實(shí)現(xiàn)彈跳小球游戲

    python3.6使用tkinter實(shí)現(xiàn)彈跳小球游戲

    這篇文章主要為大家詳細(xì)介紹了python3.6使用tkinter實(shí)現(xiàn)彈跳小球游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Python中刪除文件的程序代碼

    Python中刪除文件的程序代碼

    很多軟件在運(yùn)行時(shí)會(huì)自動(dòng)創(chuàng)建一些備份文件,在程序退出后又不自動(dòng)刪除備份文件,隨著文件數(shù)量的增加,每隔一段時(shí)間就要清理一下。
    2011-03-03
  • Python logging模塊學(xué)習(xí)筆記

    Python logging模塊學(xué)習(xí)筆記

    這篇文章主要介紹了Python logging模塊,logging模塊是在2.3新引進(jìn)的功能,用來處理程序運(yùn)行中的日志管理,本文詳細(xì)講解了該模塊的一些常用的類和模塊級(jí)函數(shù),需要的朋友可以參考下
    2014-05-05
  • python循環(huán)某一特定列的所有行數(shù)據(jù)(方法示例)

    python循環(huán)某一特定列的所有行數(shù)據(jù)(方法示例)

    在Python中,處理表格數(shù)據(jù)(比如CSV文件、Excel文件等)時(shí),我們通常會(huì)使用pandas庫,因?yàn)樗峁┝素S富的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,下面,我將以處理CSV文件中的某一特定列的所有行數(shù)據(jù)為例,給出詳細(xì)、完整的代碼示例,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Python讀取Excel批量寫入到PPT并生成詞卡

    Python讀取Excel批量寫入到PPT并生成詞卡

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)讀取Excel并批量寫入到PPT生成詞卡,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2024-12-12
  • 終于明白tf.reduce_sum()函數(shù)和tf.reduce_mean()函數(shù)用法

    終于明白tf.reduce_sum()函數(shù)和tf.reduce_mean()函數(shù)用法

    這篇文章主要介紹了終于明白tf.reduce_sum()函數(shù)和tf.reduce_mean()函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 在Python的web框架中配置app的教程

    在Python的web框架中配置app的教程

    這篇文章主要介紹了在Python的web框架中配置app的教程,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

北碚区| 桓台县| 衡南县| 岳阳市| 舒兰市| 平定县| 天全县| 蒙城县| 麦盖提县| 克拉玛依市| 沧州市| 泰州市| 图们市| 冀州市| 岳阳市| 喀什市| 南雄市| 清水河县| 大田县| 沙洋县| 班玛县| 库尔勒市| 莱州市| 卫辉市| 苍溪县| 乐山市| 仪陇县| 隆昌县| 海口市| 瑞丽市| 安丘市| 崇礼县| 巴东县| 长武县| 铁岭县| 麻江县| 邢台县| 罗定市| 扬中市| 德保县| 巴青县|