[TIL] day39
#TIL
#実習
データセットの説明
今回の問題は、台湾台北市新壇地区で収集された住宅取引に関する情報に基づき、住宅価格を予測する回帰モデルを構築することである.訓練データには6つの特徴と家屋の坪当たりの価格に相当するラベル情報が提供されている.ラベルでは、住宅の最終価格ではなく、坪当たりの価格だと改めて強調した.
各カラムの説明は、すべてのフィールドが実数タイプであるが、X 4を除く.
X 1:不注意で住宅取引日を提供します.小数点は月を表す.例えば、2013.250は2013年3月(0.250=3/12)を表す
X 2:住宅年齢(年数)
X 3:最寄りの地下鉄駅(メートル)
X 4:自宅近くのコンビニ数
X 5:家屋位置の緯度
X 6:家屋位置の経度(経度)
Y:住宅の平均価格
データを読み込み中!
データのクリーンアップを試みるには、次の4つの点を考慮する必要があります.分類データ 不要なデータ outlier nul だけど!
分類データがなく、必要なデータもなく、群外値も見えないので、
しかし、他のメンバーたちがやっていることから、データの前処理で他の機能を作ったのは、私も...知っていたのにやってしまった.
あと
(料理してるみたい)
LinearRegressionを使用します
(元の予測値も出力しましたが、パフォーマンス測定に直接移動します.)
r2: 0.555
出てきましたが、これが出てくるかどうかわからないので、他のメンバーの結果と比較してみると、いったん50%を超えると、半分くらい歩いてしまいました…!
一番鏡に映った人は62?63? この程度なら前倒し放送と言えると思います実は私は何も触っていないので、データのあるものをそのまま使っただけなので、データがいいかららしいのですが、ほほほ
他のデータを使用する場合、より多くの前処理または通常化が必要になる場合があります.
△タイタニック号でやってみるのもいいですね.
#実習
PySparkで台北市の住宅価格を予測する
データセットの説明
今回の問題は、台湾台北市新壇地区で収集された住宅取引に関する情報に基づき、住宅価格を予測する回帰モデルを構築することである.訓練データには6つの特徴と家屋の坪当たりの価格に相当するラベル情報が提供されている.ラベルでは、住宅の最終価格ではなく、坪当たりの価格だと改めて強調した.
各カラムの説明は、すべてのフィールドが実数タイプであるが、X 4を除く.
X 1:不注意で住宅取引日を提供します.小数点は月を表す.例えば、2013.250は2013年3月(0.250=3/12)を表す
X 2:住宅年齢(年数)
X 3:最寄りの地下鉄駅(メートル)
X 4:自宅近くのコンビニ数
X 5:家屋位置の緯度
X 6:家屋位置の経度(経度)
Y:住宅の平均価格
データを読み込み中!
data = spark.read.csv('./Taipei_sindan_housing.csv', header=True, inferSchema=True)
data.printSchema()
[out]
root
|-- X1: double (nullable = true)
|-- X2: double (nullable = true)
|-- X3: double (nullable = true)
|-- X4: integer (nullable = true)
|-- X5: double (nullable = true)
|-- X6: double (nullable = true)
|-- Y: double (nullable = true)
data.show()
でデータを確認します.describe
に特別な点があるかどうかを確認します.データをクリア...?
データのクリーンアップを試みるには、次の4つの点を考慮する必要があります.
分類データがなく、必要なデータもなく、群外値も見えないので、
null
値のみチェックしました.しかし、他のメンバーたちがやっていることから、データの前処理で他の機能を作ったのは、私も...知っていたのにやってしまった.
# null count
def countNull(df,var):
return df.where(df[var].isNull()).count()
missing = {c: countNull(data,c) for c in ['X1','X2','X3','X4','X5','X6']}
print(missing)
まずnull値の個数を数えましょう![out]
{'X1': 0, 'X2': 0, 'X3': 0, 'X4': 0, 'X5': 0, 'X6': 0}
フィーチャーベクトルの作成
VectorAssembler
を使用して新しいフィーチャー値を作成し、横に貼り付けます.feature_columns
は['X1', 'X2', 'X3', 'X4', 'X5', 'X6']
ですあと
transform
from pyspark.ml.feature import VectorAssembler
feature_columns = data.columns[:-1]
assembler = VectorAssembler(inputCols=feature_columns, outputCol="features")
data_2 = assembler.transform(data)
その後、トレーニングデータとテストデータを分離します(7:3)(料理してるみたい)
train, test = data_2.randomSplit([0.7, 0.3])
モデルの作成
LinearRegressionを使用します
from pyspark.ml.regression import LinearRegression
algo = LinearRegression(featuresCol="features", labelCol="Y")
model = algo.fit(train)
モデルのパフォーマンスの測定
(元の予測値も出力しましたが、パフォーマンス測定に直接移動します.)
evaluation_summary = model.evaluate(test)
evaluation_summary.meanAbsoluteError
[out]
6.6091972821462015
推定値と実際の値の差は約6.61です.f"RMSE: {evaluation_summary.rootMeanSquaredError:.3f}"
[out]
RMSE: 8.948
f"r2: {evaluation_summary.r2:.3f}"
[out]
r2: 0.555
RMSE: 9.948r2: 0.555
出てきましたが、これが出てくるかどうかわからないので、他のメンバーの結果と比較してみると、いったん50%を超えると、半分くらい歩いてしまいました…!
一番鏡に映った人は62?63? この程度なら前倒し放送と言えると思います実は私は何も触っていないので、データのあるものをそのまま使っただけなので、データがいいかららしいのですが、ほほほ
他のデータを使用する場合、より多くの前処理または通常化が必要になる場合があります.
△タイタニック号でやってみるのもいいですね.
Reference
この問題について([TIL] day39), 我々は、より多くの情報をここで見つけました https://velog.io/@hhyebb/TIL-day39テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol