基于聚类与相关性分析对马来西亚房价数据进行分析
碎碎念:由于最近太忙了,更新的比较慢,提前祝大家新春快乐,万事如意!本数据集的下载地址,读者可以自行下载。
1.项目背景
本项目旨在对马来西亚房地产市场进行初步的数据分析,探索各州的房产市场特征。通过对房产中位数价格、每平方英尺价格和交易数量等指标的可视化,结合聚类分析和点二列相关性分析,试图揭示不同房产类型与市场趋势之间的关系。该分析可以帮助更好地理解市场的基本情况,并为后续研究或决策提供数据支持。
2.数据说明
字段 | 说明 |
---|---|
Township | 房产所在的市镇名称 |
Area | 房产所在的地区名称 |
State | 房产所在的州 |
Tenure | 土地所有权性质(如 Freehold 或 Leasehold) |
Type | 房产类型(如 Terrace House, Cluster House 等) |
Median_Price | 房产的中位数价格(单位:马币) |
Median_PSF | 每平方英尺的中位数价格(单位:马币) |
Transactions | 该地区的房产交易数量 |
3.Python库导入及数据读取
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from sklearn.decomposition import PCA
from scipy.stats import pointbiserialr
data = pd.read_csv("/home/mw/input/01209371/malaysia_house_price_data_2025.csv")
4.数据预览及数据清洗
data.head()
Township | Area | State | Tenure | Type | Median_Price | Median_PSF | Transactions | |
---|---|---|---|---|---|---|---|---|
0 | SCIENTEX SUNGAI DUA | Tasek Gelugor | Penang | Freehold | Terrace House | 331800.0 | 304.0 | 593 |
1 | BANDAR PUTRA | Kulai | Johor | Freehold | Cluster House, Terrace House | 590900.0 | 322.0 | 519 |
2 | TAMAN LAGENDA TROPIKA TAPAH | Chenderiang | Perak | Freehold | Terrace House | 229954.0 | 130.0 | 414 |
3 | SCIENTEX JASIN MUTIARA | Bemban | Melaka | Freehold | Terrace House | 255600.0 | 218.0 | 391 |
4 | TAMAN LAGENDA AMAN | Tapah | Perak | Leasehold | Terrace House | 219300.0 | 168.0 | 363 |
print('查看数据信息:')
data.info()
查看数据信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2000 entries, 0 to 1999
Data columns (total 8 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 Township 2000 non-null object 1 Area 2000 non-null object 2 State 2000 non-null object 3 Tenure 2000 non-null object 4 Type 2000 non-null object 5 Median_Price 2000 non-null float646 Median_PSF 2000 non-null float647 Transactions 2000 non-null int64
dtypes: float64(2), int64(1), object(5)
memory usage: 125.1+ KB
characteristic = data.select_dtypes(include=['object']).columns
print('数据中分类变量的唯一值情况:')
for i in characteristic:print(f'{i}:')print(f'共有:{len(data[i].unique())}条唯一值')print(data[i].unique())print('-'*50)
数据中分类变量的唯一值情况:
Township:
共有:1946条唯一值
['SCIENTEX SUNGAI DUA' 'BANDAR PUTRA' 'TAMAN LAGENDA TROPIKA TAPAH' ...'TAMAN PUNCAK JELAPANG MAJU' 'TAMAN TIONG UNG SIEW''TAMAN DESA RISHAH INDAH']
--------------------------------------------------
Area:
共有:303条唯一值
['Tasek Gelugor' 'Kulai' 'Chenderiang' 'Bemban' 'Tapah' 'Tebrau''Pasir Gudang' 'Teluk Intan' 'Jasin' 'Kapar' 'Iskandar Puteri (Nusajaya)''Nilai' 'Skudai' 'Johor Bahru' 'Batu Pahat' 'Kluang' 'Ulu Tiram''Permas Jaya' 'Serendah' 'Chemor' 'Pagoh' 'Lenggeng' 'Perling' 'Penaga''Klang' 'Sungei Petai' 'Shah Alam' 'Padang Serai' 'Sitiawan' 'Ijok''Bukit Katil' 'Masai' 'Tampoi' 'Setia Alam' 'Kota Tinggi' 'Banting''Cheras' 'Tanjong Duabelas' 'Jalan Klang Lama (Old Klang Road)''Bukit Bintang' 'Rawang' 'Bandar Utama' 'Seri Iskandar' 'Ipoh' 'Senai''Tanjong Minyak' 'Labu' 'Jimah' 'Sungai Bakap' 'Batu Caves''Damansara Perdana' 'Kuantan' 'Kampar' 'Seremban 2' 'Pasir Panjang''Kijal' 'Segamat' 'Seri Kembangan' 'Rantau' 'Gurun' 'Dengkil''Subang Jaya' 'Sungai Petani' 'Puchong' 'Kajang' 'Lunas' 'Gopeng''Kepala Batas' 'Bandar Puncak Alam' 'Bangi' 'Bandar Sri Damansara''Kuala Pilah' 'Linggi' 'Bandar Sunway' 'Telok Panglima Garang' 'Beranang''Taman Tun Dr Ismail' 'Kamunting' 'Bandar Sungai Long' 'Sri Petaling''Pengerang' 'Jalan Kuching' 'Batu Arang' 'Kota Samarahan' 'Miri''Semenyih' 'Petaling Jaya' 'Simpang Ampat' 'Krubong' 'Taiping''Kota Damansara' 'Nibong Tebal' 'Bukit Mertajam' 'Wangsa Maju' 'Papar''Telok Kemang' 'Hulu Terengganu' 'Lumut' 'Merlimau' 'Ulu Klang''Damansara Heights' 'Seremban' 'Sabak Bernam' 'Parit Buntar''Seberang Jaya' 'Kepong' 'Bandar Kinrara' 'Gerisek' 'Tampin' 'Ayer Itam''Bahau' 'KLCC' 'Lukut' 'Batang Kali' 'Sungai Jawi' 'Selayang''Simpang Pulai' 'Batu Gajah' 'Sepang' 'Kuching' 'Kulim' 'Kerteh' 'Ampang''Ayer Molek' 'Bidor' 'Bayan Baru' 'Senggarang' 'Ampangan' 'Gelang Patah''Sungai Siput' 'Kota Kinabalu' 'Penampang' 'Ara Damansara' 'Segambut''Tawau' 'Bukit Rambai' 'Rasa' 'Simpang Rengam' 'Duyong' 'Mont Kiara''Durian Tunggal' 'Sibu' 'Alor Setar' 'Bachang' 'Balai Panjang''Hulu Lepar' 'Saujana Utama' 'Bukit Jalil' 'Georgetown' 'Juasseh''Sungai Rambai' 'Arau' 'Jelutong' 'Perai' 'Sungai Karang' 'Ulu Bernam''Paya Rumput' 'Sandakan' 'Tronoh' 'Kuala Terengganu' 'Setapak' 'Rasah''Kuala Selangor' 'Tanjong Tualang' 'Raub' 'Cyberjaya' 'Butterworth''Port Klang' 'Menglembu' 'Cheng' 'Sungai Buloh' 'Kuala Ibai''Bandar Sri Sendayan' 'Bayan Lepas' 'Bandar Tasik Selatan' 'Labuan''Senawang' 'Bukit Baru' 'Tanjong Tokong''Kampung Kerinchi (Bangsar South)' 'Kuala Kubu Baru' 'Bandar Enstek''Batu Berendam' 'Alor Gajah' 'Pandamaran' 'Sungai Ara' 'Dutamas''Sikamat' 'Tambun' 'Glenmarie' 'Muar' 'Mentakab' 'Pusing' 'Jenjarom''Pontian' 'Sungai Dua' 'Kuala Lipis' 'Batu Kawan' 'Lahat' 'Besut''Bukit Kepayang' 'Kuala Kedah' 'Port Dickson' 'KL Sentral' 'Sentul''Kuala Kangsar' 'Tangkak' 'Klebang' 'Kuchai Lama' 'Seri Manjong''Melaka City' 'Gelugor' 'Mantin' 'Bintulu' 'Hutan Melintang' 'Bangsar''Bagan Serai' 'Masjid Tanah' 'Balakong' 'Tuaran' 'Batu Ferringhi''Rompin' 'Tropicana' 'Bandar Menjalara' 'Bakri' 'Putrajaya' 'Taman Desa''Bukit Jambul' 'Desa Petaling' 'Kemaman' 'Kuala Ketil' 'Merbok''Sungai Lalang' 'Sungai Besi' 'Relau' 'Tanjung Bungah' 'Damansara Damai''Bedong' 'Jitra' 'Bentong' 'Teloi Kiri' 'Jementah' 'Paloh' 'Setiawangsa''Kubang Semang' 'Pantai' 'Genting Highlands' 'Jalan Ipoh' 'Bukit Minyak''Padang Enggang' 'Teras' 'Salak Selatan' 'Lahad Datu' 'Dungun''Sungai Udang' 'Triang' 'Desa ParkCity' 'KL City' 'Hulu Langat' 'Gurney''Kelana Jaya' 'Pengkalan Hulu' 'Kuah' 'Kota Marudu' 'Padang Rengas''Yong Peng' 'Tanjong Kling' 'Permatang Pauh' 'Jinjang' 'Labis' 'Umbai''Cherang Ruku' 'Saujana' 'Pekan' 'Simpang Pertang' 'Limbang' 'Paroi''Hulu Selangor' 'Brickfields' 'Balik Pulau' 'Bertam' 'Batu Kurau''Chenor' 'Ulu Langat' 'Simpang' 'Mersing' 'Juru' 'Pokok Sena' 'Rembau''Mutiara Damansara' 'Sungei Baru Tengah' 'Ampang Hilir' 'City Centre''Sri Hartamas' 'Kota Sarang Semut' 'Teluk Kumbar' 'Bandar Baharu' 'Gemas''Sungai Besar' 'Gerik' 'Sri Aman' 'Kuala Sungai Baru' 'Machang']
--------------------------------------------------
State:
共有:16条唯一值
['Penang' 'Johor' 'Perak' 'Melaka' 'Selangor' 'Negeri Sembilan' 'Kedah''Kuala Lumpur' 'Pahang' 'Terengganu' 'Sarawak' 'Sabah' 'Perlis' 'Labuan''Putrajaya' 'Kelantan']
--------------------------------------------------
Tenure:
共有:4条唯一值
['Freehold' 'Leasehold' 'Freehold, Leasehold' 'Leasehold, Freehold']
--------------------------------------------------
Type:
共有:46条唯一值
['Terrace House' 'Cluster House, Terrace House' 'Terrace House, Semi D''Terrace House, Cluster House' 'Cluster House' 'Bungalow, Terrace House''Service Residence' 'Semi D, Terrace House' 'Flat''Cluster House, Semi D' 'Terrace House, Semi D, Town House''Semi D, Cluster House' 'Apartment' 'Semi D, Terrace House, Bungalow''Semi D' 'Terrace House, Town House' 'Semi D, Town House, Terrace House''Condominium' 'Semi D, Bungalow' 'Bungalow, Semi D' 'Bungalow''Town House, Terrace House, Semi D' 'Terrace House, Semi D, Bungalow''Bungalow, Terrace House, Semi D' 'Terrace House, Bungalow''Cluster House, Terrace House, Semi D''Semi D, Terrace House, Cluster House' 'Semi D, Cluster House, Bungalow''Bungalow, Town House' 'Town House, Terrace House' 'Town House, Semi D''Terrace House, Bungalow, Semi D' 'Town House' 'Flat, Condominium''Town House, Bungalow, Terrace House' 'Apartment, Flat''Semi D, Bungalow, Terrace House' 'Town House, Semi D, Terrace House''Town House, Bungalow' 'Condominium, Service Residence''Cluster House, Bungalow' 'Flat, Apartment''Bungalow, Semi D, Terrace House' 'Semi D, Terrace House, Town House''Cluster House, Town House, Terrace House' 'Semi D, Town House']
--------------------------------------------------
由于Township、Area的唯一值特别多,对后续的分析意义不大,考虑删除,只保留State作为地理信息,而Type里存在大量组合的数据,比如’Semi D, Terrace House’这种,这里考虑拆分看看,究竟真正涉及的Type有多少种类型。
# 提取所有的房产类型,并将其拆分为单独的词
all_types = []# 按照 ", " 来拆分每个类型中的词汇
for property_type in data['Type']:types = property_type.split(", ") # 根据逗号加空格拆分all_types.extend(types)# 统计每个词的出现频次
unique_types = set(all_types) # 获取唯一类型# 显示所有唯一的房产类型
unique_types
{'Apartment','Bungalow','Cluster House','Condominium','Flat','Semi D','Service Residence','Terrace House','Town House'}
可以看到,真正的Type并不多,这里考虑把这些转为0-1二值变量,表示该样本数据是否有某个类型,这样也不会导致维度爆炸,同样的针对Tenure特征也是一样的处理。
# 创建每个房产类型的 0-1 二值变量
for property_type in unique_types:data[property_type] = data['Type'].apply(lambda x: 1 if property_type in x else 0)
# 提取所有的产权类型,并将其拆分为单独的词
all_tenure = []# 按照 ", " 来拆分每个类型中的词汇
for property_tenure in data['Tenure']:tenure = property_tenure.split(", ") # 根据逗号加空格拆分all_tenure.extend(tenure)# 统计每个词的出现频次
unique_tenure = set(all_tenure) # 获取唯一类型# 显示所有唯一的产权类型
unique_tenure
{'Freehold', 'Leasehold'}
# 创建每个房产类型的 0-1 二值变量
for property_tenure in unique_tenure:data[property_tenure] = data['Tenure'].apply(lambda x: 1 if property_tenure in x else 0)
# 删除 'Township', 'Area', 'Type' 列
data.drop(columns=['Township', 'Area', 'Type','Tenure'], inplace=True)data.head()
State | Median_Price | Median_PSF | Transactions | Terrace House | Bungalow | Service Residence | Town House | Cluster House | Flat | Semi D | Condominium | Apartment | Leasehold | Freehold | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Penang | 331800.0 | 304.0 | 593 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | Johor | 590900.0 | 322.0 | 519 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | Perak | 229954.0 | 130.0 | 414 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
3 | Melaka | 255600.0 | 218.0 | 391 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
4 | Perak | 219300.0 | 168.0 | 363 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
5.描述性分析
data.describe(include='all')
State | Median_Price | Median_PSF | Transactions | Terrace House | Bungalow | Service Residence | Town House | Cluster House | Flat | Semi D | Condominium | Apartment | Leasehold | Freehold | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 2000 | 2.000000e+03 | 2000.000000 | 2000.000000 | 2000.000000 | 2000.000000 | 2000.000000 | 2000.000000 | 2000.00000 | 2000.000000 | 2000.000000 | 2000.000000 | 2000.000000 | 2000.000000 | 2000.000000 |
unique | 16 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
top | Selangor | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
freq | 545 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
mean | NaN | 4.906854e+05 | 328.862500 | 28.091500 | 0.639500 | 0.048500 | 0.048500 | 0.018000 | 0.04800 | 0.067500 | 0.142000 | 0.084500 | 0.100000 | 0.341000 | 0.688000 |
std | NaN | 4.686322e+05 | 193.281739 | 37.702385 | 0.480266 | 0.214874 | 0.214874 | 0.132984 | 0.21382 | 0.250949 | 0.349137 | 0.278206 | 0.300075 | 0.474164 | 0.463426 |
min | NaN | 2.704900e+04 | 38.000000 | 10.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.00000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
25% | NaN | 2.699500e+05 | 201.000000 | 12.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.00000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
50% | NaN | 3.900000e+05 | 293.000000 | 16.000000 | 1.000000 | 0.000000 | 0.000000 | 0.000000 | 0.00000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1.000000 |
75% | NaN | 5.735000e+05 | 412.000000 | 28.000000 | 1.000000 | 0.000000 | 0.000000 | 0.000000 | 0.00000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1.000000 | 1.000000 |
max | NaN | 1.142050e+07 | 3017.000000 | 593.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.00000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 | 1.000000 |
state_counts = data['State'].value_counts()
plt.figure(figsize=(10, 6))plt.bar(state_counts.index, state_counts.values, edgecolor='black')
# 添加标题和标签
plt.title('各州房产分布', fontsize=16)
plt.xlabel('州', fontsize=12)
plt.ylabel('数量', fontsize=12)# 在柱子上方标注数量
for p in plt.gca().patches:plt.gca().annotate(f'{int(p.get_height())}', (p.get_x() + p.get_width() / 2., p.get_height()),ha='center', va='center', fontsize=11, color='black', xytext=(0, 5),textcoords='offset points')plt.xticks(rotation=45) # 让x轴标签倾斜,防止重叠
plt.tight_layout() # 优化图像布局
plt.show()

# 提取房屋类型
type_columns = data.iloc[:, 4:13]# 统计每种类型的数量
type_counts = type_columns.sum().sort_values(ascending=False)plt.figure(figsize=(10, 6))ax = sns.barplot(x=type_counts.index, y=type_counts.values)
plt.title('房产类型数量分布', fontsize=16)
plt.xlabel('房产类型', fontsize=12)
plt.ylabel('数量', fontsize=12)# 添加标签
for p in ax.patches:ax.annotate(f'{int(p.get_height())}',(p.get_x() + p.get_width() / 2., p.get_height()),ha='center', va='center', fontsize=11, color='black', xytext=(0, 5),textcoords='offset points')plt.tight_layout()
plt.show()

tenure_counts = data[['Leasehold', 'Freehold']].sum()plt.figure(figsize=(8, 8))
plt.pie(tenure_counts,labels=tenure_counts.index,autopct='%1.1f%%',startangle=90,colors=plt.cm.Paired.colors[:len(tenure_counts)],pctdistance=0.85, # 将百分比的标签放得更近圆心labeldistance=1.1, # 增加标签与饼图的距离
)# 添加标题并保证饼图是圆形
plt.title('房产所有权类型分布', fontsize=14)
plt.axis('equal') # 保证饼图是圆形plt.show()

# 设置画布大小
plt.figure(figsize=(15, 5))# 绘制 Median_Price 的直方图和核密度曲线
plt.subplot(1, 3, 1)
sns.histplot(data['Median_Price'], kde=True, color='skyblue', bins=30)
plt.title('房产中位数价格分布', fontsize=14)
plt.xlabel('中位数价格(马币)', fontsize=12)
plt.ylabel('频数', fontsize=12)# 绘制 Median_PSF 的直方图和核密度曲线
plt.subplot(1, 3, 2)
sns.histplot(data['Median_PSF'], kde=True, color='lightcoral', bins=30)
plt.title('每平方英尺价格分布', fontsize=14)
plt.xlabel('每平方英尺价格(马币)', fontsize=12)
plt.ylabel('频数', fontsize=12)# 绘制 Transactions 的直方图和核密度曲线
plt.subplot(1, 3, 3)
sns.histplot(data['Transactions'], kde=True, color='lightgreen', bins=30)
plt.title('交易数量分布', fontsize=14)
plt.xlabel('交易数量', fontsize=12)
plt.ylabel('频数', fontsize=12)# 调整布局
plt.tight_layout()
plt.show()

- Selangor(雪兰莪州) 和 Johor(柔佛州) 是房产数量最多的地区,合计达到45%以上,占据明显优势。
- 房产分布存在较大的区域差异,例如 Labuan(纳闽) 和 Perlis(玻璃市) 等州的房产数量极少,仅为1个。
- 房产类型以 Terrace House(排屋) 为主,数量高达1279,占主导地位。相比之下, Semi D(半独立别墅) 和 Apartment(公寓) 数量分别为284和200。
- 大多数房产为 Freehold(永久产权),占66.9%,而 Leasehold(租赁产权) 占比为33.1%。这表明永久产权房产更受购房者青睐。
- 房产中位数价格:价格集中在较低的区间,大多数房产价格低于 2,000,000 马币,但右侧存在少数极高价格的房产,表现出右偏态,可能与高端市场有关。
- 每平方英尺价格:大多数房产的每平方英尺价格集中在 200-600 马币 范围内,表明市场主要集中在相对中低端。
- 交易数量:交易数量大多数集中在 50以下,但少数地区的交易数量较高,可能与特定地区或房产类型的高市场需求有关。
state_mean = data.groupby('State')[['Median_Price', 'Median_PSF', 'Transactions']].mean()
normalized_means = state_mean.apply(lambda x: (x - x.min()) / (x.max() - x.min()))
# 绘制热力图
plt.figure(figsize=(12, 8))
sns.heatmap(normalized_means, cmap='coolwarm',center=0.5, vmin=0, vmax=1,annot=state_mean.round(2), # 显示原始值而不是归一化后的值fmt='.2f',cbar_kws={'label': '标准化得分'})
plt.title('各州房产中位数价格、每平方英尺价格和交易数量的热力图')
plt.xlabel('指标')
plt.ylabel('州')
plt.tight_layout()
plt.show()

binary_columns = data.columns[4:] # 根据实际数据修改起始列state_percentage = data.groupby('State')[binary_columns].mean() * 100 # 计算占比,转换为百分比# 绘制热力图
plt.figure(figsize=(15, 10))
sns.heatmap(state_percentage, annot=True, cmap='coolwarm', fmt='.2f', cbar=True)
plt.title('各州0-1变量占比的热力图')
plt.xlabel('房产特征')
plt.ylabel('州')
plt.tight_layout()
plt.show()

1. 高房价和高交易量
- Kuala Lumpur(吉隆坡) 在房产中位数价格(Median_Price)和每平方英尺价格(Median_PSF)上均居首位,显示出其作为马来西亚高端房地产市场的主导地位。同时,吉隆坡的交易量也在较高水平,表明其房产市场非常活跃。
- Selangor(雪兰莪) 和 Johor(柔佛) 的房产中位数价格和每平方英尺价格也较高,且两地的交易数量均较大,显示出它们作为马来西亚主要的房地产市场之一,且在多项指标上表现出强劲的市场需求。
2. 低房价和低交易量
- Labuan(纳闽) 和 Terengganu(登嘉楼) 的房产中位数价格和每平方英尺价格都在较低水平,且交易数量也较低,这可能是由于这些地区房地产市场需求较少,房价较低且交易不活跃。
- Kedah(吉打) 和 Kelantan(吉兰丹) 在房价和交易量上也较低,表明这些地区的房地产市场相对较为冷清,可能需要政策支持或其他市场刺激措施。
3. 房产特征的区域差异
- Service Residence(服务公寓) 和 Condominium(公寓) 在像 Kuala Lumpur(吉隆坡) 这样的高房价城市中占据主导地位,且占比较高。特别是在吉隆坡,服务公寓的占比接近 100%,说明它们在这些高端市场中非常受欢迎。
- Terrace House(排屋) 和 Cluster House(集体别墅) 在柔佛州和槟城等地的占比也较高,这些地区可能偏向于中低价房产市场,且交易量较大。
- Leasehold(租赁产权) 在一些州,如 Perak(霹雳) 和 Sarawak(砂拉越) 中占比较大,可能表明这些地区的土地使用权更多以租赁为主。
4. 市场的稳定性与差异
- Perlis(玻璃市) 和 Putrajaya(布城) 显示出较高的 Freehold(永久产权) 占比,尤其是 Putrajaya(布城),显示出这些地区的高端市场可能依赖于永久产权的吸引力。
- Bungalow(独立别墅) 和 Semi D(半独立别墅) 在一些州,如 Johor(柔佛) 和 Penang(槟城) 中占比较高,这表明这些类型的房产在这些州较为常见,且市场需求较强。
6.聚类分析
data_scaled = data[['Median_Price', 'Median_PSF','Transactions']]
# 对数据进行标准化
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data_scaled)
# 使用肘部法则来确定最佳聚类数
inertia = []
silhouette_scores = []
k_range = range(2, 11)
for k in k_range:kmeans = KMeans(n_clusters=k, random_state=15).fit(data_scaled)inertia.append(kmeans.inertia_)silhouette_scores.append(silhouette_score(data_scaled, kmeans.labels_))
plt.figure(figsize=(15,5))plt.subplot(1, 2, 1)
plt.plot(k_range, inertia, marker='o')
plt.xlabel('聚类中心数目')
plt.ylabel('惯性')
plt.title('肘部法则图')plt.subplot(1, 2, 2)
plt.plot(k_range, silhouette_scores, marker='o')
plt.xlabel('聚类中心数目')
plt.ylabel('轮廓系数')
plt.title('轮廓系数图')plt.tight_layout()
plt.show()

这里选择分成3类。
kmeans = KMeans(n_clusters=3, random_state=15)
kmeans.fit(data_scaled)
# 获取聚类标签
cluster_labels = kmeans.labels_
# 将聚类标签添加到原始数据中以进行分析
data['Cluster'] = cluster_labels
# 使用 PCA 将数据降维到 2 维
pca = PCA(n_components=2)
data_pca = pca.fit_transform(data_scaled)# 将 PCA 结果转为 DataFrame,并添加聚类标签
data_pca_df = pd.DataFrame(data_pca, columns=['PCA1', 'PCA2'])
data_pca_df['Cluster'] = cluster_labels# 绘制 PCA 降维后的聚类结果
plt.figure(figsize=(12, 8))
sns.scatterplot(x=data_pca_df['PCA1'], y=data_pca_df['PCA2'], hue=data_pca_df['Cluster'], palette='viridis', legend='full')
plt.title(f'K-Means聚类结果 - PCA 降维展示')
plt.xlabel('主成分 1 (PCA1)')
plt.ylabel('主成分 2 (PCA2)')
plt.legend(title='Cluster', loc='upper left')
plt.grid(True)
plt.show()

感觉分成3类是比较合理的选择,各类之间边界明显。
# 对每个特征进行归一化处理(每个特征单独归一化)
cluster_means = data.groupby('Cluster')[['Median_Price', 'Median_PSF','Transactions']].mean()
# 对每个特征进行归一化处理(每个特征单独归一化)
normalized_means = cluster_means.apply(lambda x: (x - x.min()) / (x.max() - x.min()))plt.figure(figsize=(10, 6))
sns.heatmap(normalized_means.T, cmap='coolwarm',center=0.5, vmin=0, vmax=1,annot=cluster_means.T.round(2), # 显示原始值而不是归一化后的值fmt='.2f',cbar_kws={'label': '标准化得分'})plt.xlabel('聚类')
plt.title('各聚类特征分布热力图(颜色深浅表示在该特征中的相对大小)')
plt.tight_layout()
plt.show()

聚类 0
- Median_Price:价格中等(69,164.22),属于中等价房产类别。
- Median_PSF:每平方英尺价格中等(463.20),表明单位面积价格接近平均水平。
- Transactions:交易数量最高(48.09),反映该类房产可能位于活跃的市场区域。
聚类 1
- Median_Price:价格非常低(33,088.74),为房产中价格最低的一类。
- Median_PSF:单位面积价格最低(246.14),可能是面积较大的房产。
- Transactions:交易数量最低(20.07),表明这类房产市场需求较低。
聚类 2
- Median_Price:价格非常高(2,237,694.95),属于高端房产类别。
- Median_PSF:每平方英尺价格最高(963.17),表明这类房产单位面积的价格较高,可能是高端物业。
- Transactions:交易数量中等(23.98),表明高端房产市场需求适中,但不如低价房产活跃。
7.相关性分析
target_variable = 'Median_Price'
binary_variables = data.columns[4:-1]correlation_results = []# 对每个 0-1 变量计算点二列相关性
for binary_var in binary_variables:correlation, p_value = pointbiserialr(data[binary_var], data[target_variable])correlation_results.append({'Variable': binary_var,'Correlation': correlation,'P-Value': p_value})correlation_results_df = pd.DataFrame(correlation_results)
print('房产的中位数价格与其他0-1变量之间点二列相关性分析结果:')
correlation_results_df
房产的中位数价格与其他0-1变量之间点二列相关性分析结果:
Variable | Correlation | P-Value | |
---|---|---|---|
0 | Terrace House | -0.006469 | 7.724725e-01 |
1 | Bungalow | 0.200630 | 1.315120e-19 |
2 | Service Residence | 0.151892 | 8.597954e-12 |
3 | Town House | 0.012986 | 5.616265e-01 |
4 | Cluster House | 0.046554 | 3.736301e-02 |
5 | Flat | -0.190715 | 7.782496e-18 |
6 | Semi D | 0.099457 | 8.345519e-06 |
7 | Condominium | 0.108958 | 1.038324e-06 |
8 | Apartment | -0.145906 | 5.520686e-11 |
9 | Leasehold | -0.133536 | 2.034471e-09 |
10 | Freehold | 0.138288 | 5.284742e-10 |
根据房产中位数价格与其他 0-1 变量之间点二列相关性分析结果发现:
-
正相关影响:
- Bungalow(独立别墅)、Service Residence(服务公寓)、Freehold(永久产权) 对房产中位数价格有正相关影响,表明这些类型房产通常价格较高,是高端房产的代表。
-
负相关影响:
- Flat(廉租房/公寓式房产)、Apartment(公寓)、Leasehold(租赁产权) 对房产中位数价格有负相关影响,表明这些类型房产通常价格较低,属于中低价市场。
-
无显著相关影响:
- Terrace House(排屋)、Condominium(公寓楼)、Semi D(半独立别墅)、Town House(联排别墅)、Cluster House(集体别墅) 对房产中位数价格无显著相关影响,说明这些类型房产价格变化较为稳定。
target_variable = 'Median_PSF'
correlation_results = []# 对每个 0-1 变量计算点二列相关性
for binary_var in binary_variables:correlation, p_value = pointbiserialr(data[binary_var], data[target_variable])correlation_results.append({'Variable': binary_var,'Correlation': correlation,'P-Value': p_value})correlation_results_df = pd.DataFrame(correlation_results)
print('每平方英尺的中位数价格与其他0-1变量之间点二列相关性分析结果:')
correlation_results_df
每平方英尺的中位数价格与其他0-1变量之间点二列相关性分析结果:
Variable | Correlation | P-Value | |
---|---|---|---|
0 | Terrace House | -0.219735 | 2.720014e-23 |
1 | Bungalow | -0.020702 | 3.547983e-01 |
2 | Service Residence | 0.404071 | 2.018608e-79 |
3 | Town House | -0.005334 | 8.115854e-01 |
4 | Cluster House | -0.034023 | 1.282435e-01 |
5 | Flat | -0.117332 | 1.423677e-07 |
6 | Semi D | -0.116074 | 1.936375e-07 |
7 | Condominium | 0.236312 | 8.781923e-27 |
8 | Apartment | 0.014348 | 5.213337e-01 |
9 | Leasehold | -0.139131 | 4.139900e-10 |
10 | Freehold | 0.124567 | 2.282456e-08 |
根据每平方英尺的中位价格与其他 0-1 变量之间点二列相关性分析结果发现:
-
正相关影响:
- Service Residence(服务公寓)、Condominium(公寓楼)、Freehold(永久产权) 对每平方英尺的中位价格有正相关影响,表明这些房产类型的单位面积价格更高,通常为高端房产。
-
负相关影响:
- Terrace House(排屋)、Flat(廉租房/公寓式房产)、Semi D(半独立别墅)、Leasehold(租赁产权) 对每平方英尺的中位价格有负相关影响,表明这些房产类型的单位面积价格更低,更适合中低价市场。
-
无显著相关影响:
- Transactions(交易数量)、Bungalow(独立别墅)、Apartment(公寓)、Town House(联排别墅)、Cluster House(集体别墅) 对每平方英尺的中位价格无显著相关影响,说明这些类型房产的单位面积价格较为稳定。
target_variable = 'Transactions'
correlation_results = []# 对每个 0-1 变量计算点二列相关性
for binary_var in binary_variables:correlation, p_value = pointbiserialr(data[binary_var], data[target_variable])correlation_results.append({'Variable': binary_var,'Correlation': correlation,'P-Value': p_value})correlation_results_df = pd.DataFrame(correlation_results)
print('房产交易数量与其他0-1变量之间点二列相关性分析结果:')
correlation_results_df
房产交易数量与其他0-1变量之间点二列相关性分析结果:
Variable | Correlation | P-Value | |
---|---|---|---|
0 | Terrace House | 0.172586 | 7.734399e-15 |
1 | Bungalow | -0.017406 | 4.365811e-01 |
2 | Service Residence | -0.028212 | 2.072595e-01 |
3 | Town House | -0.013100 | 5.582136e-01 |
4 | Cluster House | 0.131754 | 3.331929e-09 |
5 | Flat | -0.066956 | 2.736866e-03 |
6 | Semi D | -0.000760 | 9.729200e-01 |
7 | Condominium | -0.090734 | 4.832550e-05 |
8 | Apartment | -0.094240 | 2.429166e-05 |
9 | Leasehold | -0.070528 | 1.599190e-03 |
10 | Freehold | 0.068660 | 2.124288e-03 |
根据房产交易数量与其他 0-1 变量之间点二列相关性分析结果发现:
-
正相关影响:
- Terrace House(排屋)、Cluster House(集体别墅)、Freehold(永久产权) 对交易数量有正相关影响,表明这些类型的房产交易较为频繁,市场活跃度较高。
-
负相关影响:
- Condominium(公寓楼)、Apartment(公寓)、Flat(廉租房/公寓式房产)、Leasehold(租赁产权) 对交易数量有负相关影响,表明这些类型房产的交易频率较低,市场需求相对较小。
-
无显著相关影响:
- Service Residence(服务公寓)、Bungalow(独立别墅)、Semi D(半独立别墅)、Town House(联排别墅) 对交易数量无显著相关影响,说明这些房产类型对市场活跃度的贡献较小,交易较为稳定。
8.结论
基于对2000条房产数据的全面分析,本项目得出了以下主要结论:
1.描述性分析:
- Selangor(雪兰莪州) 和 Johor(柔佛州) 是房产数量最多的地区,合计达到45%以上,占据明显优势。
- 房产分布存在较大的区域差异,例如 Labuan(纳闽) 和 Perlis(玻璃市) 等州的房产数量极少,仅为1个。
- 房产类型以 Terrace House(排屋) 为主,数量高达1279,占主导地位。相比之下, Semi D(半独立别墅) 和 Apartment(公寓) 数量分别为284和200。
- 大多数房产为 Freehold(永久产权),占66.9%,而 Leasehold(租赁产权) 占比为33.1%。这表明永久产权房产更受购房者青睐。
- 房产中位数价格:价格集中在较低的区间,大多数房产价格低于 2,000,000 马币,但右侧存在少数极高价格的房产,表现出右偏态,可能与高端市场有关。
- 每平方英尺价格:大多数房产的每平方英尺价格集中在 200-600 马币 范围内,表明市场主要集中在相对中低端。
- 交易数量:交易数量大多数集中在 50以下,但少数地区的交易数量较高,可能与特定地区或房产类型的高市场需求有关。
- Kuala Lumpur(吉隆坡) 在房产中位数价格(Median_Price)和每平方英尺价格(Median_PSF)上均居首位,显示出其作为马来西亚高端房地产市场的主导地位。同时,吉隆坡的交易量也在较高水平,表明其房产市场非常活跃。
- Selangor(雪兰莪) 和 Johor(柔佛) 的房产中位数价格和每平方英尺价格也较高,且两地的交易数量均较大,显示出它们作为马来西亚主要的房地产市场之一,且在多项指标上表现出强劲的市场需求。
- Labuan(纳闽) 和 Terengganu(登嘉楼) 的房产中位数价格和每平方英尺价格都在较低水平,且交易数量也较低,这可能是由于这些地区房地产市场需求较少,房价较低且交易不活跃。
- Kedah(吉打) 和 Kelantan(吉兰丹) 在房价和交易量上也较低,表明这些地区的房地产市场相对较为冷清,可能需要政策支持或其他市场刺激措施。
- Service Residence(服务公寓) 和 Condominium(公寓) 在像 Kuala Lumpur(吉隆坡) 这样的高房价城市中占据主导地位,且占比较高。特别是在吉隆坡,服务公寓的占比接近 100%,说明它们在这些高端市场中非常受欢迎。
- Terrace House(排屋) 和 Cluster House(集体别墅) 在柔佛州和槟城等地的占比也较高,这些地区可能偏向于中低价房产市场,且交易量较大。
- Leasehold(租赁产权) 在一些州,如 Perak(霹雳) 和 Sarawak(砂拉越) 中占比较大,可能表明这些地区的土地使用权更多以租赁为主。
- Perlis(玻璃市) 和 Putrajaya(布城) 显示出较高的 Freehold(永久产权) 占比,尤其是 Putrajaya(布城),显示出这些地区的高端市场可能依赖于永久产权的吸引力。
- Bungalow(独立别墅) 和 Semi D(半独立别墅) 在一些州,如 Johor(柔佛) 和 Penang(槟城) 中占比较高,这表明这些类型的房产在这些州较为常见,且市场需求较强。
2.聚类分析:
将数据分为3类,其中:
-
聚类 0:中低价位房产:
- 价格较低,单位面积价格适中,交易数量最高。
- 适合普通购房者,市场需求较高,房产交易较为频繁。
-
聚类 1:低价房产:
- 总价和单位面积价格均最低,交易数量也最低。
- 可能是郊区或市场冷门地区的房产,市场需求较低。
-
聚类 2:高端房产:
- 总价和单位面积价格均非常高,交易数量适中。
- 适合高收入购房者,市场相对小众但稳定。
3.相关性分析:
- 根据房产中位数价格与其他 0-1 变量之间点二列相关性分析结果,发现:Bungalow(独立别墅)、Service Residence(服务公寓)、Freehold(永久产权) 对房产中位数价格有正相关影响,表明这些房产通常价格较高,属于高端市场;Flat(廉租房)、Apartment(公寓)、Leasehold(租赁产权) 对房产中位数价格有负相关影响,通常价格较低,适合中低价市场;Terrace House(排屋)、Condominium(公寓楼)、Semi D(半独立别墅)、Town House(联排别墅)、Cluster House(集体别墅) 对房产中位数价格影响较小,价格变化较稳定。
- 根据每平方英尺的中位价格与其他 0-1 变量之间点二列相关性分析结果,发现:Service Residence(服务公寓)、Condominium(公寓楼)、Freehold(永久产权) 对每平方英尺的价格有正相关影响,通常为高端房产;Terrace House(排屋)、Flat(廉租房)、Semi D(半独立别墅)、Leasehold(租赁产权) 对每平方英尺的价格有负相关影响,更适合中低价市场;Transactions(交易数量)、Bungalow(独立别墅)、Apartment(公寓)、Town House(联排别墅)、Cluster House(集体别墅) 对每平方英尺价格无显著相关影响,单位面积价格较为稳定。
- 根据房产交易数量与其他 0-1 变量之间点二列相关性分析结果,发现:Terrace House(排屋)、Cluster House(集体别墅)、Freehold(永久产权) 对交易数量有正相关影响,说明这些类型房产市场活跃,交易频繁;Condominium(公寓楼)、Apartment(公寓)、Flat(廉租房)、Leasehold(租赁产权) 对交易数量有负相关影响,说明市场需求较小,交易较少;Service Residence(服务公寓)、Bungalow(独立别墅)、Semi D(半独立别墅)、Town House(联排别墅) 对交易数量无显著影响,市场相对稳定。
相关文章:
基于聚类与相关性分析对马来西亚房价数据进行分析
碎碎念:由于最近太忙了,更新的比较慢,提前祝大家新春快乐,万事如意!本数据集的下载地址,读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析,探索各州的房产市…...
【例51.3】 平移数据
题目描述 将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。 输入 第一行为数组a的元素个数; 第二行为n个小于1000的正整数。 输出 平移后的数组元素,每个数用一个空格隔开。 样例输入 复制 10 1 2 3 4 5 6 7 8 9 10 样例输出 复…...
【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)
文章目录 前言一、InputAction简介1、InputAction是什么?2、示例 二、监听事件started 、performed 、canceled1、启用输入检测2、操作监听相关3、关键参数 CallbackContext4、结果 三、InputAction参数相关1、点击齿轮1.1 Actions 动作(1)动…...
Alfresco Content Services docker自动化部署操作
Alfresco Content Services docker部署文档 前提条件 在开始之前,需要确保已经安装了 Docker 和 Docker Compose。Docker 用于创建和管理容器,Docker Compose 则用于定义和运行多容器的 Docker 应用。 步骤 1. 创建目录结构 首先,创建一个…...
侧边导航(Semi Design)
根据前几次的导航栏设计,从最简单的三行导航栏到后面响应式的导航栏,其实可以在这个的基础上慢慢优化,就可以得到一个日常使用设计的导航栏。设计步骤也和之前的类似。 一、实现步骤 1、先下载安装好npm install douyinfe/semi-icons 2、引…...
Ubuntu下让matplotlib显示中文字体
文章目录 安装中文字体显示matplotlib库的字体文件夹删除matplotlib 的缓存文件(可选) matplotlib中设置字体,显示! 参考文章: https://zodiac911.github.io/blog/matplotlib-chinese.html Ubuntu下python的matplotli…...
Linux 磁盘管理
Linux 磁盘管理 引言 磁盘管理是操作系统管理中的一项重要内容,对于Linux系统而言,磁盘管理更是基础中的基础。随着数据量的不断增加,合理地管理和利用磁盘资源显得尤为重要。本文将详细介绍Linux磁盘管理的基本概念、工具和策略,旨在帮助Linux用户和系统管理员更好地掌握…...
解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题
操作系统:CentOS 9 Zabbix版本:Zabbix7.2 问题描述:主机图形中文字符乱码 解决方案: # 安装字体配置和中文语言包 sudo yum install -y fontconfig langpacks-zh_CN.noarch # 检查是否已有中文字体: fc-list :lan…...
Spring MVC (三) —— 实战演练
项目设计 我们会将前端的代码放入 static 包下: 高内聚,低耦合 这是我们在实现项目的设计思想,一个项目里存在很多个模块,每一个模块内部的要求类与类、方法与方法要相互配合紧密联系,这就是高内聚,低耦合…...
地下排水管道损害缺陷检测数据集VOC+YOLO格式2051张6类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2051 标注数量(xml文件个数):2051 标注数量(txt文件个数):2051 …...
读写和解析简单的 nc 文件
NetCDF 文件格式在气象数据工程领域占据着举足轻重的地位,其结构灵活、强兼容性等优势使其成为该领域的一个标准。无论是从事学术研究还是工程实践,掌握这种数据格式变得越发重要。其次,我注意到目前社区中气象编程大多数课程都聚焦于某个特定…...
【北京大学 凸优化】Lec1 凸优化问题定义
【北京大学 凸优化】Lec1 凸优化问题定义 前言优化问题的分类连续优化问题离散优化问题组合优化问题变分(Variational)优化问题基于限制条件的分类基于凸性的分类 前言 马上快要过年了,天气自然寒冷起来,空气中也理所当然的弥漫着…...
Spring Boot Actuator 集成 Micrometer(官网文档解读)
目录 概述 实现 Observation 可观测性 Observation 功能核心类 ObservationPredicate GlobalObservationConvention ObservationFilter ObservationHandler ObservationRegistryCustomizer Observation 相关注解 多线程处理机制 配置上下文传播 常用标签配置 Open…...
图的矩阵表示
一、邻接矩阵 长度为k的通路条数:A的k次方矩阵的所有元素和 长度为k的回路条数:A的k次方矩阵的对角线元素和 二、可达矩阵 计算使用布尔乘积 三、关联矩阵...
SpringCloud两种注册中心
SpringCloud 基本概念 系统架构 我们之前做的所有的项目都属于单体架构,下面我们将要学习更适合大型项目的分布式架构 单体架构: 将业务的所有功能几种在一个项目中开发,打成一个包部署。 优点:架构简单、部署成本低 缺点&am…...
【中间件快速入门】什么是Redis
现在后端开发会用到各种中间件,一不留神项目可能在哪天就要用到一个我们之前可能听过但是从来没接触过的中间件,这个时候对于开发人员来说,如果你不知道这个中间件的设计逻辑和使用方法,那在后面的开发和维护工作中可能就会比较吃…...
Pandas基础02(DataFrame创建/索引/切片/属性/方法/层次化索引)
DataFrame数据结构 DataFrame 是一个二维表格的数据结构,类似于数据库中的表格或 Excel 工作表。它由多个 Series 组成,每个 Series 共享相同的索引。DataFrame 可以看作是具有列名和行索引的二维数组。设计初衷是将Series的使用场景从一维拓展到多维。…...
适配Android16
Android16新特性 Android 16带来了许多新特性和改进,提升了系统的流畅度、用户体验和安全性。对于应用开发者来说,适配Android 16可以确保应用在该版本上的兼容性和性能,同时也可以利用其新特性为用户提供更好的服务。以下是Android 16的一些…...
.NET MAUI进行UDP通信(二)
上篇文章有写过一个简单的demo,本次对项目进行进一步的扩展,添加tabbar功能。 1.修改AppShell.xaml文件,如下所示: <?xml version"1.0" encoding"UTF-8" ?> <Shellx:Class"mauiDemo.AppShel…...
生信软件管家——conda vs pip
pip vs conda: 安装过python包的人自然两种管理软件都用过, Pip install和Conda install在Python环境中用于安装第三方库和软件包,但它们在多个方面存在显著的区别 总的来说: pip是包管理软件,conda既是包管理软件&…...
从替代到覆盖:暴雨信创服务器打开市场新局面
进入2025年,全球局势更加变幻莫测,高科技领域越来越受到全球局势影响。美国前任总统拜登在卸任前,特别颁布限制GPU产品出口法案。新任总统特朗普上任第一天,废除了多项之前法案,但显示技术交流的内容一条没变。 在如此艰难的局面下,我国信创市场的发展显得尤为重要,国家也从政策…...
HTML5 常用事件详解
在现代 Web 开发中,用户交互是提升用户体验的关键。HTML5 提供了丰富的事件机制,允许开发者监听用户的操作(如点击、拖动、键盘输入等),并触发相应的逻辑处理。本文将详细介绍 HTML5 中的常用事件,包括鼠标…...
使用 Pipeline 提高 Redis 批量操作性能
使用 Pipeline 提高 Redis 批量操作性能 在 Redis 中,Pipeline(管道) 是一种用于提高批量操作性能的技术。它允许客户端一次性发送多个命令到 Redis 服务器,而不需要等待每个命令的单独响应,从而减少了**网络往返&…...
ElasticSearch-文档元数据乐观并发控制
文章目录 什么是文档?文档元数据文档的部分更新Update 乐观并发控制 最近日常工作开发过程中使用到了 ES,最近在检索资料的时候翻阅到了 ES 的官方文档,里面对 ES 的基础与案例进行了通俗易懂的解释,读下来也有不少收获࿰…...
每日一题--合并二叉树
合并二叉树 问题描述 已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:如果节点存在于两棵树中,则将节点值相加;如果某个节点在一棵树中不存在,则直接使用另一棵树的节点值。例如: 两颗二叉树如下&a…...
【喜讯】海云安荣获“数字安全产业贡献奖”
近日,国内领先的数字化领域独立第三方调研咨询机构数世咨询主办的“2025数字安全市场年度大会”在北京成功举办。在此次大会上,海云安的高敏捷信创白盒产品凭借其在AI大模型技术方面的卓越贡献和突出的技术创新能力,荣获了“数字安全产业贡献…...
数字转中文大写JAVA
一般在收据打印过程中,可能会要求展示中文大写金额,以下提供两种实现。 1正常代码逻辑处理 优点:易理解,好维护 缺点:代码较长 package com.test;import java.math.BigDecimal;public class NumberToChinese {priv…...
如何使用 pytest-html 创建自定义 HTML 测试报告
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 测试 Python 代码对于提高代码质量、检测漏洞或意外行为至关重要。 但测试结果又该…...
思科交换机telnet配置案例
目录 1.telnet简述2.网络拓扑3.设备说明4.网络配置4.1 电脑PC ip设置4.2 网络交换机telnet配置 5.小结 1.telnet简述 Telnet是远程登录服务的一个协议,该协议定义了远程登录用户与服务器交互的方式。它允许用户在一台联网的计算机上登录到一个远程分时系统中&#…...
LabVIEW进行可靠性测试时有哪些常见的问题
在进行LabVIEW开发和测试时,尤其是用于可靠性测试,可能会遇到一些常见的问题。以下是一些常见问题及其解决方法: 1. 数据采集卡与硬件兼容性问题 问题描述:某些数据采集卡(DAQ)与硬件设备的兼容性问题可能…...
三年级数学知识边界总结思考-下册
目录 一、背景二、过程1.位置与方向小学三年级课本上位置与方向的知识点、由来、作用和意义一、位置与方向的知识点二、位置与方向的由来三、位置与方向的作用和意义 2.复试统计表小学三年级课本上复式统计表的知识点、由来、作用和意义一、复式统计表的知识点二、复式统计表的…...
假期学习【Java程序】的实施方案
一、前期准备 1.1 设定明确的学习目标 在假期开始之前,明确学习Java的具体目标至关重要。这些目标应该具体、可衡量且符合实际。例如,如果你是初学者,可以设定目标为掌握Java的基础语法、理解面向对象编程的核心概念,并能够编写…...
Java 大视界 -- Java 大数据中的知识图谱构建与应用(62)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Macos下交叉编译安卓的paq8px压缩算法
官方没有android的编译方法,自己编写脚本在macos下交叉编译. 下载源码: git clone https://github.com/hxim/paq8px.git 稍旧的ndk并不能编译成功,需要下载最新的ndkr27c, 最后是使用clang来编译。 编译build.sh export ANDROID_NDK/Vol…...
npm启动前端项目时报错(vue) error:0308010C:digital envelope routines::unsupported
vue 启动项目时,npm run serve 报下面的错: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:67:19) at Object.createHash (node:crypto:133:10) at FSReqCallback.readFileAfterClose [as on…...
设计模式-建造者模式、原型模式
目录 建造者模式 定义 类图 优缺点 角色 建造者模式和工厂模式比较 使用案例 原型模式 定义 类图 优缺点 应用场景 应用类型 浅克隆 深克隆 建造者模式 定义 将一个复杂的对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,…...
Android vendor.img中文件执行权问题
问题 Android 9、11往vendor.img增加文件,烧写到设备后发现增加的可执行文件没有执行权限。经过漫长查找,终于找到了问题的根源,谨以此篇献给哪些脚踏实地的人们。 根本原因 system/core/libcutils/fs_config.cpp文件,fs_confi…...
MATLAB 如何避免复杂shp文件对inpolygon的影响
**任务描述:**当我想用inpolygon函数将属于非洲的pixel选出来时,发现因为周边小岛的影响,pixel选取有问题,如下图。 第一种解决办法: 首先将复杂shp文件查分成简单的shp文件,即将不相交的元素分离开 [QGIS…...
Golang Gin系列-8:单元测试与调试技术
在本章中,我们将探讨如何为Gin应用程序编写单元测试,使用有效的调试技术,以及优化性能。这包括设置测试环境、为处理程序和中间件编写测试、使用日志记录、使用调试工具以及分析应用程序以提高性能。 为Gin应用程序编写单元测试 设置测试环境…...
【论文阅读】Equivariant Diffusion Policy
Northeastern University 2Boston Dynamics AI Institute 摘要 近期研究表明,扩散模型是一种有效的方法,可用于在行为克隆中学习由演示数据产生的多模态分布。然而,这种方法的一个缺点是需要学习去噪函数,这比学习显式策略要复杂…...
[ACTF2020 新生赛]BackupFile1
题目 翻译,尝试找出源文件! 扫目录使用参数-e * python dirsearch.py -u http://0c3b21c0-d360-4baa-8b97-aa244f4c4825.node5.buuoj.cn:81/ -e * 最终扫描到一个文件名为:/index.php.bak的文件,把备份文件下载下来 源码 <?…...
手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)
手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍) 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…...
ASP.NET Core WebAPI的异步及返回值
目录 Action方法的异步 Action方法参数 捕捉URL占位符 捕捉QueryString的值 JSON报文体 其他方式 Action方法的异步 Action方法既可以同步也可以异步。异步Action方法的名字一般不需要以Async结尾。Web API中Action方法的返回值如果是普通数据类型,那么返回值…...
doris: CSV导入数据
本文介绍如何在 Doris 中导入 CSV 格式的数据文件。Doris 支持灵活的 CSV 格式配置,包括自定义分隔符、字段包围符等,并提供多种导入方式以满足不同场景的数据导入需求。 导入方式 Doris 支持以下方式导入 CSV 格式数据: Stream LoadBro…...
数据标注开源框架 Label Studio
数据标注开源框架 Label Studio Label Studio 是一个开源的、灵活的数据标注平台,旨在帮助开发者和数据科学家轻松创建高质量的训练数据集。它支持多种类型的数据(如文本、图像、音频、视频等)以及复杂的标注任务(如分类、命名实体…...
Next.js 实战 (十):中间件的魅力,打造更快更安全的应用
什么是中间件? 在 Next.js 中,中间件(Middleware)是一种用于处理每个传入请求的功能。它允许你在请求到达页面之前对其进行修改或响应。 通过中间件,你可以实现诸如日志记录、身份验证、重定向、CORS配置、压缩等任务…...
js/ts数值计算精度丢失问题及解决方案
文章目录 概念及问题问题分析解决方案方案一方案二方案其它——用成熟的库 概念及问题 js中处理浮点数运算时会出现精度丢失。js中整数和浮点数都属于Number数据类型,所有的数字都是以64位浮点数形式存储,整数也是如此。所以打印x.00这样的浮点数的结果…...
Linux之Tcp粘包笔记
目录 一.网络传输四层模型 二.数据传输中数据包传输的两个限制概念 三.数据传输的中粘包问题 四.数据组装的原因 Nagle算法原理: 五.关闭Nagle优化处理粘包问题吗? 六.粘包处理方法 a.设置消息边界: b.定义消息长度: 七.UDP是否会出…...
StarRocks 安装部署
StarRocks 安装部署 StarRocks端口: 官方《配置检查》有服务端口详细描述: https://docs.starrocks.io/zh/docs/deployment/environment_configurations/ StarRocks架构:https://docs.starrocks.io/zh/docs/introduction/Architecture/ Sta…...
【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述(一)
【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述(一) 【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述(一) 文章目录 【深度学习|迁移学习】渐进式学习策略 (Progressive L…...