波士頓房價數據集綜述

一、數據集介紹

波士頓房價數據集是一個經典的回歸問題數據集,包含了1970年代末期波士頓的南部郊區共506個房屋樣本。這些數據都是在20世紀70年代末期以舊金山海灣區房價的情況為基準,採集了波士頓房價相關的特徵。這些特徵包括了房屋所在城市的犯罪率、每個城鎮平均房間數以及自有住房比例等。每個特徵的值都已經經過了預處理,例如處理了缺失值和異常值。

該數據集已經成為了機器學習、統計學和數據挖掘領域的經典數據集,被廣泛用於回歸問題和特徵選擇問題的研究。

二、數據集特徵

波士頓房價數據集共有13個要素特徵,分別是:

      CRIM:城鎮人均犯罪率
      ZN:佔地面積超過25000平方英尺的住宅用地比例
      INDUS:城鎮非零售商業用地比例
      CHAS:是否靠近Charles River的虛擬變量(如果靠近為1,否則為0)
      NOX:一氧化氮濃度(每千萬份)
      RM:每個住房的平均房間數
      AGE:1940年以前自有住房的比例
      DIS:距離5個波士頓就業中心的成塊加權距離
      RAD:輻射性公路的可達性指數
      TAX:每10,000美元的全額財產稅率
      PTRATIO:城鎮師生比例
      B:黑人比例(以1000為單位)
      LSTAT:地位較低人群的比例

其中,前12個特徵都是數值型特徵,而第13個特徵是一個百分比。這些特徵是用於預測每個房屋的房價。

三、探索性數據分析

1. 單獨特徵與標籤的關係探討

為了更好地理解特徵和標籤之間的關係,我們可以通過繪製特徵和標籤的圖像來進行探究。

# 導入數據集
from sklearn.datasets import load_boston
boston_dataset = load_boston()

# 轉換數據為pandas DataFrame
import pandas as pd
boston = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
boston['MEDV'] = boston_dataset.target

# 繪製每個特徵與標籤之間的散點圖
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=4, ncols=4, figsize=(15,10))
for col,ax in zip(boston.columns,axes.flat):
    ax.scatter(boston[col],boston['MEDV'])
    ax.set_title(col)
plt.tight_layout()
plt.show()

通過觀察每個子圖的判定係數(R²值),我們可以初步了解到每個特徵與標籤之間的關係。例如,我們可以發現與房價最相關的特徵是房間數量(RM),而與房價最不相關的特徵是犯罪率(CRIM)。

2. 特徵之間的關係探討

除了單獨特徵與標籤之間的關係,我們也可以考慮不同特徵之間的關係來進行探究。例如,我們可以使用熱力圖來可視化特徵之間的關係:

# 繪製特徵之間的熱力圖
import seaborn as sns
corr_matrix = boston.corr().round(2)
sns.heatmap(data=corr_matrix, annot=True)

通過觀察熱力圖,我們可以發現有多個特徵之間存在較強的相關性,例如房屋的房間數(RM)和房屋的平均年齡(AGE)之間的負相關關係。

四、建模預測

1. 線性回歸

線性回歸可以被用來預測波士頓房價的範圍。我們可以使用train_test_split()函數來將數據分割成訓練集和測試集,並使用LinearRegression()來訓練我們的模型:

# 導入數據集
from sklearn.datasets import load_boston
boston_dataset = load_boston()

# 構建數據集並進行分割
from sklearn.model_selection import train_test_split
X = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
y = boston_dataset.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 訓練線性回歸模型
from sklearn.linear_model import LinearRegression
reg = LinearRegression().fit(X_train, y_train)

# 輸出模型評分
print("訓練集評分:{:.2f}".format(reg.score(X_train, y_train)))
print("測試集評分:{:.2f}".format(reg.score(X_test, y_test)))

我們可以將訓練集評分和測試集評分分別輸出,以評估我們的模型的性能。如果訓練集評分比測試集評分要高,這意味着我們的模型可能存在過擬合:即模型在訓練集上表現良好但在測試集上表現不佳。

2. KNN回歸

KNN回歸是另一種用于波士頓房價預測的常用算法。與線性回歸不同,KNN回歸不需要假設房價與特徵之間的關係是線性的。我們可以使用KNeighborsRegressor()來訓練我們的模型:

# 導入數據集
from sklearn.datasets import load_boston
boston_dataset = load_boston()

# 構建數據集並進行分割
from sklearn.model_selection import train_test_split
X = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names)
y = boston_dataset.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 訓練KNN回歸模型
from sklearn.neighbors import KNeighborsRegressor
knn = KNeighborsRegressor().fit(X_train, y_train)

# 輸出模型評分
print("訓練集評分:{:.2f}".format(knn.score(X_train, y_train)))
print("測試集評分:{:.2f}".format(knn.score(X_test, y_test)))

同樣,我們也可以將訓練集評分和測試集評分分別輸出,以評估我們的模型的性能。

五、總結

波士頓房價數據集是一個經典的回歸問題數據集,包含了1970年代末期波士頓的南部郊區共506個房屋樣本。特徵包括了房屋所在城市的犯罪率、每個城鎮平均房間數以及自有住房比例等。我們可以通過探索性數據分析來確定每個特徵和標籤之間的關係,也可以使用線性回歸和KNN回歸模型來預測波士頓房價的範圍。

原創文章,作者:DVZEX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/332875.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
DVZEX的頭像DVZEX
上一篇 2025-01-27 13:34
下一篇 2025-01-27 13:34

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29
  • Python根據表格數據生成折線圖

    本文將介紹如何使用Python根據表格數據生成折線圖。折線圖是一種常見的數據可視化圖表形式,可以用來展示數據的趨勢和變化。Python是一種流行的編程語言,其強大的數據分析和可視化…

    編程 2025-04-29

發表回復

登錄後才能評論