住宅価格予測のための機械学習

住宅価格予測のための機械学習

序文

Python は機械学習において当然の利点を持っているので、今日から機械学習技術に取り組んでみましょう。以下は学習プロセスからのメモで、なぜこの操作が行われるのかを理解するための多くのコメントが付いています。

コードは次のように実装されます。

Numpy と Pandas と Matplotlib と Ipython

 #NumPy ( Numerical Python ) は、多次元配列や行列演算をサポートするPython言語の拡張ライブラリです。また、配列演算用の数学関数ライブラリも多数提供しています。
numpyをnp としてインポートする

#Pandasは、データのマージ、再形成、選択、データのクリーニング、データ処理機能など​​、データに対してさまざまな操作を実行できます。
pandaspd としてインポートする

#MatplotlibPython用のプロットライブラリです NumPy と連携し MatLab に代わる効率的なオープンソースを提供します。
matplotlib.pyplot plt としてインポートします

#Ipython . displayライブラリは画像の表示に使用されます
IPython.display からImage をインポートします
sklearn.model_selection からtrain_test_split インポートします

輸入警告
警告. filterwarnings ( 'ignore' )

データ= pd.read_csv ( "train.csv" )
印刷( タイプ( データ))
print ( データ. 情報())
印刷( データ. 形状)
print ( データ. ヘッド())
print ( データ[[ 'MSSubClass' , 'LotArea' ]])

データセットと欠損値

 #データセット内のいくつかの重要な特徴を選択する
data_select = data [[ '寝室面積' , '敷地面積' , '近隣地域' , '販売価格' ]]

# データセット内のフィールドの名前を変更する
data_select = data_select . rename ( columns = { 'BedroomAbvGr' : 'room' , 'LotArea' : 'area' })
印刷( データ選択)
印刷( data_select . shape )
印刷( "*" * 100 )

#isnull () は欠損値を決定するために一般的に使用されますが、生成されるのはすべてのデータからなる真偽行列です。
印刷( data_select . isnull ())

#df . isnull (). any () は、 どの「列」に欠損値があるかを判断します。
印刷( data_select . isnull () . any ())

#欠損値のある行と列のみを表示し、欠損値の位置を明確に識別します
print ( data_select .isnull () .values ​​== True )

#欠落データをフィルタリング
data_select = data_select.dropna ( axis = 0 )
印刷( data_select . shape )
印刷( data_select . head ())

#print ( np . take ( data_select . columns ,[ 0 , 1 , 3 ]))
#print ( type ( np . take ( data_select . columns ,[ 0 , 1 , 3 ])))

正規化

 #数値が大きすぎる場合は正規化してデータ分布を同じ範囲にします最も単純なデータ調整方法を選択し各数値を最大値で割ります。
col in np . take ( data_select . columns , [ 0 , 1 , - 1 ] ):
# 印刷( )
# print ( data_select [ ] )
data_select [ ] /= data_select [ ] .max ()

印刷( data_select . head ())

#テストデータとトレーニングデータを配布する
トレーニングテスト= train_test_split ( data_select . copy ()、 test_size = 0.9 )
印刷( 列車. 形状)
印刷( テスト. 形状)
印刷( テスト. 記述())


#numpyaxis = 0 axis = 1を使用する例:
印刷( "=" * 50 )
データ= np . 配列([[ 1 , 2 , 3 , 4 ],[ 5 , 6 , 7 , 8 ],[ 9 , 10 , 11 , 12 ]])
印刷( データ)
print ( data . shape ) #shape = [ 3 , 4 ] は3行4列を意味します
print ( np . sum ( data )) #numpyで軸が指定されていない場合は、デフォルトですべてのデータが追加されます

print ( np . sum ( data , axis = 0 )) #axis = 0 が指定された場合計算は最初の次元の方向に沿って実行されますつまり、 列内の3つのデータが計算され、4セットの列データの計算結果が得られます。

print ( np . sum ( data , axis = 1 )) #axis = 1 が指定された場合計算は2次元目の方向に沿って実行されますつまり、 行内の4つのデータが計算され、3セットの行データ計算結果が得られます。

印刷( "=" * 50 )

#pandasaxis = 0 axis = 1 を使用する例:
#df.mean ( axis = 1 ) を呼び出すと行ごとに計算された平均が得られます。
df = pd.DataFrame (np.arange ( 12 ) .reshape ( 3,4 ) )
印刷( df )

print ( df . mean ()) #pandasでは、axisが指定されていない場合、デフォルトの計算はaxis = 0に基づいて行われます。

print ( df . mean ( axis = 0 )) # axis = 0 が指定された場合最初の次元の変化方向に従って計算が実行されますつまり、 列内の3つのデータが計算され、4セットの列データ計算結果が得られます。

print ( df . mean ( axis = 1 )) # axis = 1 が指定された場合2番目の次元の変化方向に従って計算が実行されますつまり、 行内の4つのデータが計算され、3セットの行データ計算結果が得られます。

線形回帰モデル

 #h ( x ) = wx + b が線形であると仮定した線形回帰モデル
定義線形( 特徴部分):
print ( "pars は: " , pars )
印刷( pars [: - 1 ])
価格= np . sum ( 特徴* pars [: - 1 ], = 1 ) + pars [ - 1 ]
返品価格

印刷( "*" * 100 )
train [ 'predict' ] = linear ( train [[ 'room' , 'area' ]]. values ​​,np.array ( [ 0.1 , 0.1 , 0.0 ]))

# このパラメータではモデルの予測価格と実際の価格の間に大きなギャップがあることがわかりますしたがって、適切なパラメータ値を見つけることが、必要なことです。
print ( 列車. ヘッド())


#予測関数はh ( x ) = wx + b
#偏差の二乗和関数:
平均二乗誤差を定義します( 予測y実y ):
合計を返します( np . array ( pred_y - real_y ) ** 2 )

#損失関数:
def lost_function ( dffeaturespars ):
df [ '予測' ] = linear ( df [ 特徴]. ​​, pars )
コスト= 平均二乗誤差( df.predict df.SalePrice ) / len ( df )
返品費用

コスト= lost_function ( 列車,[ '部屋' , 'エリア' ], np . 配列([ 0.1 , 0.1 , 0.1 ]))
印刷費用

#linspace 関数のプロトタイプ: linspace ( startstopnum = 50endpoint = Trueretstep = Falsedtype = None )
#この関数は、指定された大きな間隔内で固定間隔のデータを返します。 [ start , stop ] の間隔で等間隔​​に並べられた「num」個のサンプルを返します。間隔の終了点は除外できますが、デフォルトでは含まれます。
数値= 100
Xs = np . linspace ( 0 , 1 , num )
Ys = np . linspace ( 0 , 1 , num )
print ( Xs ) #if num = 5 - > [ 0. 0.25 0.5 0.75 1. ]
print ( Ys ) #if num = 5 - > [ 0. 0.25 0.5 0.75 1. ]

#zeros 関数プロトタイプ: zeros ( shape , dtype = float , order = 'C' )
#機能: 通常は配列を目的の行列に変換します。
# 例: np . zeros ( ( 2 , 3 ), dtype = np . int )
Zs = np . zeros ([ num , num ]) #100 * 100 行列、すべての値は 0 です
印刷( Zs )

#meshgridは座標ベクトルから座標行列を返します
Xs , Ys = np.meshgrid ( Xs , Ys ) です
印刷( Xs . 形状Ys . 形状)
print ( Xs ) #num = 5 の場合、処理された行列は次のようになります。
'' '
[[ 0. 0.25 0.5 0.75 1. ]
[ 0. 0.25 0.5 0.75 1. ]
[ 0. 0.25 0.5 0.75 1. ]
[ 0. 0.25 0.5 0.75 1. ]
[ 0. 0.25 0.5 0.75 1. ]]
'' '
print ( Ys ) #num = 5の場合、処理された行列は次のようになります。
'' '
[[ 0. 0. 0. 0. 0. ]
[ 0.25 0.25 0.25 0.25 0.25 ]
[ 0.5 0.5 0.5 0.5 0.5 ]
[ 0.75 0.75 0.75 0.75 0.75 ]
[ 1. 1. 1. 1. 1. ]]
'' '
W1 = []
W2 = []
費用= []

iが範囲( 100 ) 内である場合:
j 範囲( 100 )の場合:
W1 . 追加( 0.01 * i )
W2 . 追加( 0.01 * j )
コスト.append ( lost_function ( train ,[ 'room' , 'area' ] ,np.array ( [ 0.01 * i , 0.01 * j , 0. ])))
#numpy . argmin ( aaxis = Noneout = None )
#a : 行列
#axis : 整数、オプション (選択されていない場合は配列全体が展開されます) (0 : 行、1: 列)
# 小さい値の添え字を返す
インデックス= np .array ( lost_function ) .argmin ()
print ( W1 [ インデックス], W2 [ インデックス], コスト[ インデックス])

mpl_toolkits からmplot3d をインポートしてAxes3D を作成します
= plt . ()
ax = fig.add_subplot ( 111 , projection = '3d' ) で、プロットの座標をプロットします。
ax.view_init ( 5 , -15 )
ax.scatter W1W2コストs = 10
ax.scatter ( 0.58,0.28 , zs = lost_function ( train ,[ 'room' , 'area' ] ,np.array ( [ 0.58,0.28,0.0 ] )), s = 100 , color = ' red ' )
plt . xlabel ( '部屋' )
plt . ylabel ( 'llotArea' )
plt . 表示()

<<:  Chen Danqi 氏のグループによるマスク言語モデルに関する研究: 15% のマスク率は最適ではないが、40% は維持可能か?

>>:  AI天気予報には依然として人間の介入が必要

ブログ    
ブログ    

推薦する

エッジAIはテクノロジー業界に大きな変化をもたらしている

近年、人工知能 (AI) の出現により、私たちの産業や個人の生活は真に革命的な変化を遂げ、これまでに...

2021年世界の最新人工知能技術9選

1. 自然言語生成自然言語生成は、構造化されたデータをネイティブ言語に変換する流行のテクノロジーです...

AIの技術的負債の解消は急務

この流行は世界市場に衝撃をもたらしたが、人工知能(AI)企業への資本投資は増加し続けている。 CB ...

天津市、スマートテクノロジー産業の発展促進に向け多方面から対策

2017年に第1回世界情報会議が開催されて以来、天津では257件のプロジェクトが実施され、1000億...

人類の生存に関わる問題ですか? AI システムの説明可能性を調査する理由は何ですか?

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

Huang が H100 を「ブースト」: NVIDIA が大規模モデル アクセラレーション パッケージを発表、Llama2 推論速度が 2 倍に

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

機械学習の戦略原則: 基本プロセス、アルゴリズムフレームワーク、プロジェクト管理

著者: cooperyjli、Tencent CDG のデータ アナリスト機械学習は、データの収集、...

AI による執筆の歴史を振り返ると、AI が人間の執筆作業に取って代わるまでにはどのくらい時間がかかるのでしょうか?

AI がまた本を出版しました。今回は専門家向けの教科書です。科学技術系出版社のひとつ、ドイツのシュ...

OpenAIがテキストから動画を生成するAIジェネレーター「Sora」をリリース

OpenAI が Sora をリリースし、テキストからビデオへの AI コンテンツ生成競争に参入。 ...

...

未成年者の顔情報の処理には保護者の個別の同意が必要です

最高人民法院の楊万明副院長は、最高人民法院が十分な研究に基づいて顔情報に司法上の保護を与えるための「...

グレートウルフホテルはAIを活用してゲストの体験とレビューを理解する

現在、ホテルやエンターテインメント業界のチェーンは、ゲストの体験やレビューをスキャンして理解するため...

自動運転は自動車産業の未来だが、これはドライバーが手を完全に自由にできることを意味するものではない。

自動運転車は未来を象徴しているが、運転手が全てを完全に機械に任せることはできないかもしれない。おそら...

...

スマートテクノロジーは小売業界にどのような影響を与えるでしょうか?

過去数年間、小売業界はテクノロジーによって革命を起こしてきました。店舗の日々の運営方法から、消費者の...