2017-02-13 16 views
0

まず、あいまいな質問をお詫び申し上げます。私に説明させてください。 私は2列、すなわち平方フィートと寝室数を含むパンダデータフレームを持っています。私は線形回帰を使って価格を計算しようとしており、行列を実行してGradient Descentを計算したいと考えています。平方フィートは寝室数の1000倍であり、グラデーションデサントはうまく収束しないので、私は正規化によって属性のこの尺度分散を処理しようとしています。pythonのpandasデータフレームでapplymapを使って正規化のスケールを扱う方法

私がやっている特定の正規化は、それぞれの平均で寝室と四角い柱の個々の列セルを減算し、それぞれの標準偏差で結果を除算することです。質問は、私は列の1000のを持っている場合、これはスケールしませんようにこれを行うための簡単な方法がある

meanb= X[['bedrooms']].mean() 
    meanFeet=X[['sqrfeet']].mean() 
    stdb=X[['bedrooms']].std() 
    stdFeet=X[['sqrfeet']].std() 

    norb=lambda x: (x-meanb)/stdb 
    nors=lambda x: (x-meanFeet)/stdFeet 

    X['bedrooms']=X['bedrooms'].apply(norb) 
    X['sqrfeet']= X['sqrfeet'].apply(nors) 

- :私が書いた コードはこれです。 それぞれの列の平均と標準偏差を計算し、各列のそれぞれのセルで正規化を実行するdataframe.applymap()メソッドがあるのだろうかと思います。各列は異なる範囲の値を持つことができますが、すべて数値であることに注意してください。最初の列に記載されている

答えて

0

と仮定

1.価格と

2.youのたいが、価格の列以外のすべての列を標準化

from sklearn import preprocessing 
import numpy as np 


X, y = df.iloc[:,2:].values, df.iloc[:,1].values  
scaler = preprocessing.StandardScaler().fit(X) 
scaler.transform(X) 

OR

STD = lambda x: (x-x.mean())/x.std() 
0

感謝あなたの助けに。私はこれを行う方法がたくさんあることを知っています。 実際、私はそれを以下のように解決しました。個々のラベル付き列に対して適用/ラムダ関数を選択的に使用することができます。たとえば、meanとmaxを使って正規化している場合は、次のサンプルコードを使用しました。(ここで完全なコードは共有していません):

sqrftMax=data['sqrfeet'].max() 
    sqrftMean=data['sqrfeet'].mean() 

    #normalized list of sqrfootage. 
    nSqrft= data['sqrfeet'].apply(lambda x: (x-sqrftMean)/sqrftMax) 
    data['sqrfeet'] =nSqrft 
関連する問題