日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聚类尝试-kmeans-step1数据预处理

發布時間:2023/12/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聚类尝试-kmeans-step1数据预处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在已爬取的上海二手房數據基礎上,調用高德接口,獲取房屋經緯度及人民廣場經緯度。在原有數據上添加一列“房子到人民廣場的距離”,然后利用k-means進行聚類分析。本文只記錄數據預處理部分。

REF:

Python:爬了下鏈家的小區數據,為數據分析弄素材~_Cyber的博客-CSDN博客_小區數據前言:最近在學數據分析,包括主成分分析、因子分析、聚類。。。等等,沒有數據可不行啊,所以就把鏈家的小區數據給爬了一下,為后續的分析實戰弄素材~一、數據爬取準備鏈家的網站還是很好爬的,地址很有標準,可以看到下圖中有5391個小區,但是很多都是無效小區,而且單頁只有30個小區且最多30頁,所以我們需要從源碼上了解具體結構。從第二頁起,鏈接就變成pg2之類的,依次類推,就可以爬取30頁以后的數...https://blog.csdn.net/weixin_42029733/article/details/93064205?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-1.queryctr&spm=1001.2101.3001.4242.2&utm_relevant_index=4

1.1 數據導入

import pickle import pandas as pd import re import numpy as np import requests import json import math from tqdm import tqdm, trange# 讀取 shanghai_ershou = pickle.load(open( './shanghai_ershou_v2.pkl', 'rb')) # hangzhou_new = pickle.load(open( './hangzhou_new.pkl', 'rb'))l = [] for key in shanghai_ershou.keys():l.append(len(shanghai_ershou[key].keys()))print('爬取房屋的總數:',sum(l))# 轉化為dataframe shanghai_ershou_df = pd.DataFrame(columns = pd.DataFrame(shanghai_ershou['locationbeicaipg1']).index) for i in shanghai_ershou.keys():temp = pd.DataFrame(shanghai_ershou[i]).Tshanghai_ershou_df = pd.concat([shanghai_ershou_df, temp], ignore_index = True)

1.2 已有數據進行數據預處理

# 發現dataframe中每個元素都是一個列表(有可能為空) def extract_0(x):"""提取列表中第一個元素,若列表為空,則返回none"""try:return x[0]except:return None df_shanghai = shanghai_ershou_df.copy() # dataframe中每一列數據都從列表中提取出來 for col in df_shanghai.columns:df_shanghai[col] = df_shanghai[col].apply(extract_0)# 對總價進行處理 df_shanghai.total_price = df_shanghai.total_price.astype('float')# 對單價進行處理 df_shanghai.unit_price = df_shanghai.unit_price.str.extract(r'([\d,]+)').replace(',','', regex = True).astype('float')[0]# 對面積進行處理 df_shanghai['area'] = df_shanghai.loc[:,'info'].str.extract('([\d.]+)平米')

1.3 批量調用接口并解析出經緯度

res_dict = {} for i in trange(df_shanghai.shape[0]): # for i in tqdm(range(5)):url = 'https://restapi.amap.com/v3/geocode/geo?key=c00a9fc63a97c64fe63bf1ff051a285e&address=上海市{}&city=上海市'location = df_shanghai.iloc[i, 5]+df_shanghai.iloc[i,0]try:res = requests.get(url.format(location.rstrip())).textexcept:res = Nonefinally:res_dict[i] = resdf_shanghai['api'] = pd.Series(res_dict)def parse_location(res):if res != None:geocodes = json.loads(res).get('geocodes')[0]location = geocodes.get('location')return locationelse:return None# 經緯度 df_shanghai['location'] = df_shanghai.api.map(parse_location)# 經度,緯度 df_shanghai['longitude'] = df_shanghai.location.str.extract('([\d.]+),') df_shanghai['latitude'] = df_shanghai.location.str.extract(',([\d.]+)')df_shanghai['longitude'] = df_shanghai['longitude'].astype('float') df_shanghai['latitude'] = df_shanghai['latitude'].astype('float')

1.4 計算距離

# 獲取人民廣場的經緯度 url = 'https://restapi.amap.com/v3/geocode/geo?key=c00a9fc63a97c64fe63bf1ff051a285e&address=上海市{}&city=上海市' location = '人民廣場' res = requests.get(url.format(location.rstrip())).text rg_location = json.loads(res).get('geocodes')[0].get('location')matchObj = re.search('([\d.]+),', rg_location) rg_longitude = float(matchObj.group(1)) # 經度 matchObj = re.search(',([\d.]+)', rg_location) rg_latitude = float(matchObj.group(1)) # 緯度 # 定義用于計算距離的函數def angle2radian(x):"角度轉換為弧度"return x*math.pi/180def rec2sphere(lng1, lat1):"球坐標系->直角坐標系"R = 6371x1 = R*math.cos(lng1)*math.cos(lat1)y1 = R*math.cos(lng1)*math.sin(lat1)z1 = R*math.sin(lat1)return x1, y1, z1def get_chord_length(x1, y1, z1, x2, y2, z2):"獲取直角坐標系中的直線距離"dx = x1 - x2dy = y1 - y2dz = z1 - z2lenth = np.sqrt(dx**2+dy**2+dz**2)return lenthdef get_distance(lng1, lat1, lng2 , lat2):"輸入經緯度,得到兩地距離(km)"R = 6371# 角度轉化為弧度lng1 = angle2radian(lng1)lat1 = angle2radian(lat1)lng2 = angle2radian(lng2)lat2 = angle2radian(lat2)# 球坐標->直角坐標x1, y1, z1 = rec2sphere(lng1, lat1)x2, y2, z2 = rec2sphere(lng2, lat2)# 三維空間中的距離(大圓中的弦長)lenth = get_chord_length(x1, y1, z1, x2, y2, z2)# 大圓中的弧長alpha = math.asin(lenth/2/R)*2r = alpha*Rreturn r # dataframe的每一行計算距離 distance_dict = {} for i in trange(df_shanghai.shape[0]):lng1 = df_shanghai.iloc[i].longitudelat1 = df_shanghai.iloc[i].latitudedistance = get_distance(lng1, lat1, rg_longitude, rg_latitude)distance_dict[i] = distancedf_shanghai['distance_rg'] = pd.Series(distance_dict)

1.4 數據存儲

df_shanghai.drop(columns = ['api', 'location'], inplace=True) df_shanghai.to_csv('sh_ershou_clean_v2.csv')

step2:

聚類嘗試-kmeans-step2聚類模型訓練及結果可視化_nikita_zj的博客-CSDN博客聚類嘗試-kmeans-step2聚類模型訓練及結果可視化https://blog.csdn.net/nikita_zj/article/details/122343615

總結

以上是生活随笔為你收集整理的聚类尝试-kmeans-step1数据预处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久大陆 | 欧美成人一区二区三区四区 | 亚洲理论电影在线观看 | 国产一区二区三区精品在线观看 | 久久久久亚洲AV | 欧美一级一区 | 黄色小视频在线播放 | 日本后进式猛烈xx00动态图 | 国产美女自拍视频 | 日韩在线电影一区 | 成人一级网站 | 欧洲日韩一区二区三区 | 中文字幕一区二区三区免费 | 精品亚洲一区二区 | 北条麻纪在线观看aⅴ | 高跟91白丝 | 国产极品粉嫩 | 国产男女猛烈无遮挡免费观看网站 | 91精品国产自产在线观看 | 亚洲av毛片基地 | 色亚洲欧美 | 牛牛影视一区二区三区 | 一本一道久久综合狠狠老精东影业 | 九九天堂网| 中文字幕在线色 | 美女福利在线观看 | 国产日韩亚洲欧美 | 377p粉嫩大胆色噜噜噜 | 91 免费看片 | 成人av黄色| 四虎国产精品永久在线国在线 | 精品爱爱 | 97久久精品人人澡人人爽 | 国产一区二区视频播放 | 亚洲成人一二三 | 播放灌醉水嫩大学生国内精品 | 国产成人综合在线观看 | 日本免费网 | 夜色综合网 | 久久久视频6r | 亚洲a在线播放 | 青青草原亚洲 | aaaa一级片 | 欧美成人久久久免费播放 | 午夜欧美精品久久久久久久 | 国产男女爽爽爽 | 久久精品播放 | 国产精品久久久久99 | 少妇毛片一区二区三区 | 又白又嫩毛又多15p 超碰在线一区 | 最新久久久 | 色交视频 | 国产精品无码一区二区三区三 | 久久久久国产精品午夜一区 | 91娇羞白丝网站 | 日本无翼乌邪恶大全彩h | 日韩综合中文字幕 | 白石茉莉奈中文字幕在 | 精品欧美一区二区三区成人 | 激情男女视频 | 寡妇av | 丁香六月av| 日韩免费网站 | 波多野结衣免费视频观看 | 真人毛片97级无遮挡精品 | 中文字幕精品视频在线 | a级片网址 | 亚洲一区在线视频观看 | 久久久久成人网站 | 久久精品久 | 久久久精品免费观看 | 天天操网址 | 久热伊人| 国产av人人夜夜澡人人爽麻豆 | 超碰婷婷 | 欧美日本一区二区 | 反差在线观看免费版全集完整版 | 久久久资源 | 毛利兰被扒开腿做同人漫画 | 各种含道具高h调教1v1男男 | xxxx黄色片 | 欧美电影一区二区三区 | 玉女心经是什么意思 | 91禁在线观看 | 国产精品久久久久毛片软件 | 激情一级片| 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 一区二区三区av夏目彩春 | 亚洲一区a| 女人叉开腿让男人桶 | 国产精品99久久久 | 国产精品成人国产乱 | 啪啪自拍| 欧美一级专区免费大片 | 免费伊人网 | 女性裸体瑜伽无遮挡 | 97精品久久| 女性毛片 | 香蕉尹人网 |