1.資料預處理
a.標準化
b.歸一化
2.計算歐式距離
3.
3.演算法實現import pandas as pd
from sklearn.preprocessing import standardscaler
from scipy.spatial import distance
dc_listings = pd.read_csv('listings.csv')
features = ['accommodates','bedrooms','bathrooms','beds','price','minimum_nights','maximum_nights','number_of_reviews']
dc_listings = dc_listings[features]
dc_listings['price'] = dc_listings.price.str.replace("\$|,",'').astype(float)
# 處理缺失值
dc_listings = dc_listings.dropna()
dc_listings[features] = standardscaler().fit_transform(dc_listings[features]) #資料歸一化
normalized_listings = dc_listings
# print(dc_listings.shape)
# normalized_listings.head()
# 分割訓練集、測試集
norm_train_df = normalized_listings.copy().iloc[0:2792]
norm_test_df = normalized_listings.copy().iloc[2792:]
# print(norm_train_df.shape)
# print(norm_test_df.shape)
# 計算兩個樣本的歐氏距離
first_listing = normalized_listings.iloc[0][['accommodates','bathrooms']]
fifth_listing = normalized_listings.iloc[20][['accommodates','bathrooms']]
first_fifth_distance = distance.euclidean(first_listing,fifth_listing)
def predict_price_multivariate(new_listing_value,feature_columns):
temp_df = norm_train_df
temp_df['distance'] = distance.cdist(temp_df[feature_columns],[new_listing_value[feature_columns]]) #計算測試集合中某乙個和訓練集的歐式距離(多個屬性)
temp_df = temp_df.sort_values('distance')
knn_5 = temp_df.price.iloc[:5] #取前5個最近鄰,計算平均**(**)
predicted_price = knn_5.mean()
return(predicted_price)
# 利用sklearn來實現knn
from sklearn.neighbors import kneighborsregressor
from sklearn.metrics import mean_squared_error
cols = ['accommodates','bathrooms']
knn = kneighborsregressor()
knn.fit(norm_train_df[cols],norm_train_df['price'])
two_features_predictions = knn.predict(norm_train_df[cols])
two_features_mse = mean_squared_error(norm_train_df['price'],two_features_predictions)
two_features_rmse = two_features_mse**(1/2)
print(two_features_rmse)
機器學習之k 近鄰演算法
k nearest neighbor演算法又叫knn演算法,這個演算法是機器學習裡面乙個比較經典的演算法,總體來說knn演算法是相對比較容易理解的演算法 定義 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別 2 相似度 就是指兩個點之...
機器學習實戰之K 近鄰演算法
k 近鄰演算法工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的資料進行比較,然後演算法提取樣本集中特徵最相似資料 最鄰近 的分類標籤。一般來說,我們只選取樣本資料集...
機器學習(一)之k近鄰演算法
1.knn k nearest neighbor 工作原理 存在乙個樣本資料集 訓練樣本集 且樣本集中每個資料都存在標籤,即我們知道樣本集中每個資料與所屬分類的對應關係。輸入沒有標籤的新資料後將新資料的每個特徵和樣本集裡的資料對應的特徵作比較,然後演算法提取樣本集中特徵最相似資料的分類標籤 最近 一...