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

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

序文

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 開発企業向けのトップ機械学習フレームワーク (2020 年版)

[[283218]] [51CTO.com クイック翻訳] 実際、人工知能技術は私たちの生活を日々...

マスクを着用していても、AIはあなたが何を言っているか理解できる

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

業界の洞察 | 世界の人工知能とその産業チェーン

18 世紀半ば以降、3 度の産業革命により、蒸気駆動の機械生産から電気駆動の機械生産へと、人類社会に...

人工知能に特化したAIハッカーが近々登場すると予想

最近、ある問題を発見しました:映画でも現実でも、人工知能AIは人間を圧倒するような形で世間の前に現れ...

...

2027年のAIはどのようになっているでしょうか?ヒントは、あなたの脳の中にあります。

やっていることをやめて、窓の外の鳥やリス、昆虫などを眺めてみましょう。これらの生物は、食物を見つけた...

Googleは従業員に対し、生成AIの秘密を「漏らしたり」、直接コードを書いたりしないように警告している。

ロイター通信によると、6月15日のニュースでは、Googleは生成AIの最も熱心な支持者の1つである...

.Net Framework ガベージ コレクション固有のアルゴリズムの詳細な説明

.Net Framework は、Microsoft が提供する .NET 開発に基づいた基本環境で...

壁につかまることを学んだロボット:私を落とすことはできない

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

AIと自動化により企業のクラウド移行が改善

COVID-19 パンデミックの影響で、2020 年末までに推定 60% の企業がワークロードをクラ...

IDC FutureScape: 人工知能がIT業界とビジネス運営を変革する

IDC は、2024 年以降の世界の情報技術業界の予測である FutureScape レポートを発表...

...