python数据分析-房价数据集聚类分析

news2024/12/28 21:52:55

一、研究背景和意义

随着房地产市场的快速发展,房价数据成为了人们关注的焦点。了解房价的分布特征、影响因素以及不同区域之间的差异对于购房者、房地产开发商、政府部门等都具有重要的意义。通过对房价数据的聚类分析,可以深入了解房价的内在结构和规律,为相关决策提供科学依据。

研究意义:

  1. 为购房者提供参考:通过聚类分析,可以将房价数据分为不同的类别,购房者可以根据自己的需求和预算选择适合的房源。
  2. 帮助房地产开发商制定营销策略:了解不同区域的房价特征和需求,可以帮助房地产开发商制定更有针对性的营销策略,提高销售效率。
  3. 为政府部门提供决策支持:政府部门可以通过房价数据的聚类分析,了解房地产市场的发展趋势和存在的问题,制定相应的政策措施,促进房地产市场的健康发展。
  4. 推动房地产市场的研究:房价数据的聚类分析是房地产市场研究的重要内容之一,通过对房价数据的深入分析,可以推动房地产市场的研究不断深入。

二、实证分析

首先导入数据集基本的包

数据和代码

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt

然后读取数据集和展示

# 读取文件
file_path = 'df_cleaned2.csv'
data = pd.read_csv(file_path, encoding='utf-8')

# 展示数据的前几行以了解结构
print(data.head())

随后查看数据类型

 

接下来查看缺失值的情况

# 查看缺失值情况
missing_values = data.isnull().sum()
missing_values

 

# 绘制缺失值情况的柱状图
# 绘制缺失值情况的柱状图
plt.bar(missing_values.index, missing_values.values, color=['black' if value == 0 else 'white' for value in missing_values.values])
plt.xlabel("变量")
plt.ylabel("缺失值数量")
plt.title("数据集缺失值情况")
plt.xticks(rotation=90)
plt.show()

从上面的结果和可视化可以发现该数据集没有缺失值,接下来进行统计学描述性分析

# 描述性分析
data.describe()

接下来进行特征可视化,首先进行房价直方图可视化

import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi']  #中文
plt.rcParams['axes.unicode_minus'] = False   #负号
# 可视化
# 绘制总价的直方图
plt.hist(data["总价"], bins=20,color='pink')
plt.xlabel("总价")
plt.ylabel("频数")
plt.title("总价分布直方图")
plt.show()

 

 

接下来进行区域分析 

# 区域分析
data["区域位置"] = data["区域位置"].astype("category")
data.boxplot(column="总价", by="区域位置",boxprops={'color':'blue'})
plt.xlabel("区域")
plt.ylabel("总价")
plt.title("不同区域的总价箱线图")
plt.show()

 

# 绘制不同户型的平均总价柱状图

data.groupby("户型结构")["总价"].mean().plot(kind="bar",color='orange')
plt.xlabel("户型")
plt.ylabel("平均总价")
plt.title("不同户型的平均总价柱状图")
plt.show()

接下来计算特征直接的相关系数

correlation_matrix = data.corr()
correlation_matrix

 

热力图:

plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix, annot=True, cmap="coolwarm")
plt.title("相关系数热力图")
plt.show()

接下来进行聚类分析,首先进行特征选择,选择特征:关注度、总价、卫生间数量、建筑面积,然后标准化特征

随后使用手肘方法和轮廓系数确定最佳 K 值

sse = {}
silhouette_scores = {}
for k in range(2, 11):  # 从 2 开始,因为轮廓系数至少需要 2 个簇
    kmeans = KMeans(n_clusters=k, random_state=42).fit(scaled_selected_features)
    sse[k] = kmeans.inertia_
    silhouette_scores[k] = silhouette_score(scaled_selected_features, kmeans.labels_)
# 绘制手肘图
plt.figure(figsize=(10, 6))
plt.subplot(2, 1, 1)
plt.plot(list(sse.keys()), list(sse.values()), marker='o')
plt.xlabel("Number of Clusters (K)")
plt.ylabel("SSE (Sum of Squared Errors)")
plt.title("Elbow Method for Determining Optimal K Value")
plt.grid(True)

接下来使用 PCA 进行降维以便于可视化

pca = PCA(n_components=2)  # 降至 2 维
pca_result = pca.fit_transform(scaled_selected_features)

# 可视化聚类结果
plt.figure(figsize=(10, 6))
plt.scatter(pca_result[:, 0], pca_result[:, 1], c=labels, cmap='viridis', marker='o')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title(f'K-means Clustering with K={k} (PCA Reduced)')
plt.grid(True)
plt.show()

随后得出聚类中心

 

接下来根据聚类中心画出雷达图

# 标签,用于表示不同的聚类中心
labels = ['Cluster 1', 'Cluster 2', 'Cluster 3', 'Cluster 4']

# 特征数
num_features = len(centers[0])
angles = np.linspace(0, 2 * np.pi, num_features, endpoint=False).tolist()

# 将第一个特征点重复以闭合雷达图
centers = np.concatenate((centers, centers[:,[0]]), axis=1)
angles += angles[:1]

fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))
ax.set_theta_offset(np.pi / 2)
ax.set_theta_direction(-1)

# 绘制雷达图
for i in range(len(centers)):
    ax.plot(angles, centers[i], linewidth=2, label=labels[i])
    ax.fill(angles, centers[i], alpha=0.25)

# 添加标题和图例
plt.title('Radar Chart of Clusters')
plt.legend(loc='upper right', bbox_to_anchor=(1.1, 1.1))

plt.show()

接下来可视化主成分

# 可视化主成分 1 的载荷
plt.figure(figsize=(8, 4))
colors = ['red', 'green', 'blue', 'yellow', 'purple', 'orange', 'pink', 'brown', 'gray', 'cyan']
plt.bar(pca_loadings_df.columns, pca_loadings_df.loc['PC1'], color=colors)
plt.xlabel('Features')
plt.ylabel('Loadings for PC1')
plt.title('PCA Loadings for Principal Component 1')
plt.show()

# 可视化主成分 2 的载荷
plt.figure(figsize=(8, 4))
plt.bar(pca_loadings_df.columns, pca_loadings_df.loc['PC2'], color=colors)
plt.xlabel('Features')
plt.ylabel('Loadings for PC2')
plt.title('PCA Loadings for Principal Component 2')
plt.show()

 

 三、小结

本研究通过对房价数据的聚类分析,将房价数据分为了不同的类别,发现了房价的分布特征和规律。通过特征选择和标准化处理,提高了聚类分析的准确性和可靠性。使用手肘方法和轮廓系数确定了最佳的 K 值,为聚类分析提供了科学依据。通过 PCA 进行降维,可视化了主成分,进一步深入了解了房价数据的内在结构。本研究的结果对于购房者、房地产开发商、政府部门等都具有重要的参考价值,可以为相关决策提供科学依据。

创作不易,希望大家多点赞关注评论!!!(类似代码或报告定制可以私信)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1818452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | 文件操作(上)【必收藏】

文件操作(上) 1、使用文件的原因2、什么是文件3、二进制文件和文本文件4、 流的打开与关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开和关闭 5、文件的顺序读写5.1 顺序读写函数介绍5.1.1 fputc与fgetc 1、使用文件的原因 首先来看…

据阿谱尔统计显示,2023年全球凹版印刷机市场销售额约为9.1亿美元

根据阿谱尔 (APO Research)的统计及预测,2023年全球凹版印刷机市场销售额约为9.1亿美元,预计在2024-2030年预测期内将以超过2.54%的CAGR(年复合增长率)增长。 由于对软包装和印刷包装的需求不断增长,全球凹…

Qt绘图项目 - 简易表盘

发话少说&#xff0c;放码过来 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();prot…

3-哈希表-81-四数之和-LeetCode18

3-哈希表-81-四数之和-LeetCode18 参考&#xff1a;代码随想录 LeetCode: 题目序号18 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff…

C#发送邮件

C#发送邮件代码&#xff0c;亲测可用。 using System; using System.Net; using System.Net.Mail;namespace MailSend {class Program{static void Main(string[] args){try{MailAddress receiver new MailAddress("666666666qq.com");//666666666qq.com 换成收件人…

告别混乱!7步打造精益管理模式,让企业效率翻倍

当下&#xff0c;企业要想立于不败之地&#xff0c;就必须注重管理效率的提升。然而&#xff0c;很多企业在追求高效运营的过程中&#xff0c;却常常陷入混乱和无效的努力中。那么&#xff0c;如何才能真正实现精益管理呢&#xff1f;深圳天行健精益管理咨询公司分享步骤如下&a…

【投稿优惠】2024年计算机科学与软件工程国际会议(ICCSSE 2024)

2024年计算机科学与软件工程国际会议 2024 International Conference on Computer Science and Software Engineering 会议简介 2024年计算机科学与软件工程国际会议是一个备受全球瞩目的学术盛会&#xff0c;旨在促进计算机科学和软件工程领域的学术交流与合作。此次会议将汇聚…

Android开发之音乐播放器添加排行需求

Music统计功能需求 1.记录歌曲名称与次数(歌曲播放结束算一次)&#xff0c;根据播放次数制作一个排行列表;&#xff08;开始说要记录歌手&#xff0c;后面debug发现这个字段没有&#xff0c;暂时不记录&#xff09; 2.记录播放歌曲的时长&#xff0c;时间累加&#xff1b;&…

基于安信可串口调试助手软件调试ESP8266串口WIFI模块ESP-01S应用功能

基于安信可串口调试助手软件调试ESP8266串口WIFI模块ESP-01S应用功能 ESP8266_01S引脚功能图ESP8266_01S原理图ESP8266_01S尺寸图检验工作1、USB-TTL串口工具(推荐使用搭载CP2102芯片的安信可USB-T1串口)与ESP8266_01S WiFi模块(推荐使用安信可ESP8266系列模组)接线(注意当…

使用谷歌 Gemini API 构建自己的 ChatGPT(一)

AI领域一直由OpenAI和微软等公司主导&#xff0c;而Gemini则崭露头角&#xff0c;以更大的规模和多样性脱颖而出。它被设计用于无缝处理文本、图像、音频和视频&#xff1b;这些基础模型重新定义了人工智能交互的边界。随着谷歌在人工智能领域强势回归&#xff0c;了解Gemini如…

HMI(人机交互)应用的15大领域,欢迎补充。

HMI&#xff08;Human-Machine Interface&#xff0c;人机界面&#xff09;可以应用于许多不同的场景和行业&#xff0c;包括但不限于以下几个方面&#xff1a; 工业控制系统&#xff1a;HMI在工业生产中广泛应用&#xff0c;用于监控和控制生产过程。例如&#xff0c;工厂中的…

数据库学霸笔记

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

前端问题整理

Vue vue mvvm&#xff08;Model-View-ViewModel&#xff09;架构模式原理 Model 是数据层&#xff0c;即 vue 实例中的数据View 是视图层&#xff0c; 即 domViewModel&#xff0c;即连接Model和Vue的中间层&#xff0c;Vue实例就是ViewModelViewModel 负责将 Model 的变化反映…

构建企业核心竞争力:拥有自主大模型,引领行业未来

前言 随着人工智能技术的飞速发展&#xff0c;大模型技术已经成为推动行业进步的重要力量。在这个变革的时代&#xff0c;作为一位具有前瞻性的企业家&#xff0c;您深知拥有自主大模型对于提升公司竞争力、引领行业未来的重要性。本文将为您详细介绍大模型的市场现状以及企业…

【机器学习】通用大模型VS垂直大模型,你更加青睐哪一方?

目录 前言AI大模型的战场&#xff1a;通用与垂直的分化通用大模型&#xff1a;广泛适用的利器垂直大模型&#xff1a;深入领域的利器谁能够形成绝对优势&#xff1f;结语通用大模型文章推荐 前言 AI大模型的战场正在分化&#xff1a; 通用大模型在落地场景更广泛毋庸置疑&…

暗色系B端界面有什么好处、应用场景、缺点、该如何设计。

B端管理系统界面蓝色系和浅色系的非常多&#xff0c;暗色系一般不作为首选&#xff0c;这背后是什么原因呢&#xff0c;如果真的要设计暗色系界面&#xff0c;该如何办呢&#xff0c;本文就解决这些问题。 一、暗色系B端界面相对于浅色系有什么好处 1. 减少眩光和视觉疲劳&am…

引入tinyMCE富文本框在vue3中的使用

实现效果&#xff1a; 官网地址&#xff1a;TinyMCE 7 Documentation | TinyMCE Documentation 1.下载依赖&#xff08;我使用的版本是5.0 目前最新版本到7了&#xff09; pnpm/npm install tinymce5.0.0 -S pnpm/npm install tinymce/tinymce-vue -S 2.在public文件夹下…

浅析Spring中Async注解底层异步线程池原理

一、前言 开发中我们经常会用到异步方法调用&#xff0c;具体到代码层面&#xff0c;异步方法调用的实现方式有很多种&#xff0c;比如最原始的通过实现Runnable接口或者继承Thread类创建异步线程&#xff0c;然后启动异步线程&#xff1b;再如&#xff0c;可以直接用java.uti…

数字孪生技术如何赋能智慧工厂

数字孪生技术为什么能在智慧工厂中发挥作用&#xff1f;随着工业4.0的推进和智能制造的普及&#xff0c;数字孪生技术成为智慧工厂的重要推动力。数字孪生是指在虚拟空间中创建一个与现实物理实体相对应的数字模型&#xff0c;通过实时数据交互和分析&#xff0c;实现对物理实体…

即插即用!CVD:第一个生成具有相机控制的多视图一致视频方案!(斯坦福港中文)

论文链接&#xff1a;https://arxiv.org/abs/2405.17414 项目链接&#xff1a;https://collaborativevideodiffusion.github.io/ 最近对视频生成的研究取得了巨大进展&#xff0c;使得可以从文本提示或图像生成高质量的视频。在视频生成过程中添加控制是未来的重要目标&#x…