数据挖掘与分析——数据预处理

2024-06-23 02:36

本文主要是介绍数据挖掘与分析——数据预处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 数据探索

波士顿房价数据集:卡内基梅隆大学收集,StatLib库,1978年,涵盖了麻省波士顿的506个不同郊区的房屋数据。

一共含有506条数据。每条数据14个字段,包含13个属性,和一个房价的平均值。

数据读取方法:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets
names =['CRIM','ZN','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX','PTRATIO','B','LSTAT','MEDV']
data=pd.read_csv('housing.csv', names=names, delim_whitespace=True)
data1=data.head(10)
  1. 请绘制散点图探索波士顿房价数据集中犯罪率(CRIM)和房价中位数(MEDV)之间的相关性。
# 创建散点图
sns.scatterplot(x=data1['CRIM'], y=data1['ZN'])
# 添加数据标签
for i in range(len(data1['CRIM'])):plt.text(data1['CRIM'][i], data1['ZN'][i], str(i), fontsize=8, color='black')
# 添加标题
plt.title('Correlation between CRIM and ZN')
# 显示图形
plt.show()

 

  1. 请使用波士顿房价数据集中房价中位数(MEDV)来绘制箱线图。
# 创建箱线图
sns.boxplot(data['CRIM'])
# 添加数据标签
# for i in range(len(data['CRIM'])):
#     plt.text(1, data['CRIM'][i], data['CRIM'][i], horizontalalignment='center', verticalalignment='bottom')
plt.title('Boxplot of CRIM')
plt.show()

 

  1. 请使用暗点图矩阵探索波士顿房价数据集。
sns.pairplot(data)
plt.show()print(data['CRIM'].corr(data['MEDV'],method='pearson'))
print(data['CRIM'].corr(data['MEDV'],method='spearman'))
print(data['CRIM'].corr(data['MEDV'],method='kendall'))

 

  1. 请分别使用皮尔逊(pearson)、斯皮尔曼(spearman)、肯德尔(kendall)相关系数对犯罪率(CRIM)和房价中位数(MEDV)之间的相关性进行度量。
print(data['CRIM'].corr(data['MEDV'],method='pearson'))
print(data['CRIM'].corr(data['MEDV'],method='spearman'))
print(data['CRIM'].corr(data['MEDV'],method='kendall'))

 

相关系数计算方法:

  1. 请绘制波士顿房价数据集中各变量之间相关系数的热力图。

需提前安装seaborn库:pip install seaborn


plt.figure(figsize=(12, 10))
sns.heatmap(data.corr(),annot=True,cmap='Blues_r')
plt.show()

 

  1. 数据预处理
x1x2x3x4x5x6x7x8x9x10x11x12x13x14y
122.0811.462441.5850001210012130
022.6772840.1650000216010
029.581.751441.250001228010
021.671530111112011
120.178.172641.96111402601591
00.5852881120211
117.426.52340.12500002601010
058.674.4621183.0411602435611
127.8311283000021765380
055.757.082486.7511312100510
133.51.752148114122538581
141.425211851161247011
120.671.251881.375113121400
34.92521487.511612010011
12.712842.415001232010
148.086.0424400002026911
129.584.52947.51121233011
018.9292640.7511202885921
1201.251440.1250000214050
022.425.66521142.585170212932581
028.170.5852640.04000210050
019.170.5851640.5851001216010
141.171.3352240.1650000216810
141.581.752440.21100216010
19.52640.7900002803510
132.751.521385.511312011
122.50.1251440.12500002200710
133.173.041882.0411112180180281
030.6712284211102220201
123.082.52841.0851111126021851
1270.75288113123121511
020.4210.51148000012154330
152.331.3751889.4610122001010
123.0811.52982.1251111122902851
142.831.2527413.875011123521130
174.83191110.040120203520
125264310012011
139.5813.9152948.625116127011
047.7582847.87511612012611
047.423214413.8751121251917051
123.17021340.0851002011
122.581.51640.5400012120680
126.751.12521481.2510002052991
163.330.542840.5851131218010
123.750.4151840.040120212870
020.7521140.71112124911
024.51.751840.1650000213210
116.170.042840.0400002011
029.521108200002256180
052.83152845.5111402022011
132.333.52440.50001223210
121.084.1251380.0400021401010
128.170.1251440.0850000221621010
1191.751842.3350001211270
127.583.251185.0850121220
127.831.52942111112434361
16.52653.51110205011
037.332.52380.21000022600
142.54.9151943.16510125214431
156.7512.252741.251141220011
143.1752352.250001214110
023.750.712940.250111224050
118.522341.5112021203011
040.833.52350.500001116010
024.50.521181.5100022808251
  1. 读取“银行贷款审批数据.xlsx”表,自变量为x1-x14,决策变量为y(1-同意贷款,0-不同意贷款),自变量中有连续变量(x2,x3,x5,x6,x7,x10,x13,x14)和离散变量(x1,x4,x8,x9,x11,x12),请对连续变量中的缺失值用均值策略填充,对离散变量中的缺失值用最频繁值策略填充。
import pandas as pd# 读取Excel文件
df = pd.read_excel("银行贷款审批数据.xlsx")# 定义连续变量和离散变量列表
continuous_vars = ['x2', 'x3', 'x5', 'x6', 'x7', 'x10', 'x13', 'x14']
discrete_vars = ['x1', 'x4', 'x8', 'x9', 'x11', 'x12']# 使用均值填充连续变量的缺失值
for var in continuous_vars:df[var].fillna(df[var].mean(), inplace=True)# 使用最频繁值填充离散变量的缺失值
for var in discrete_vars:most_frequent_value = df[var].mode()[0]df[var].fillna(most_frequent_value, inplace=True)# 检查是否还有缺失值
missing_values = df.isnull().sum().sum()
if missing_values == 0:print("所有缺失值已填充。")
else:print("仍有缺失值未填充。")# 输出填充后的数据框的前几行
print(df.head())# 保存填充后的数据框到Excel文件
df.to_excel("填充后的银行贷款审批数据.xlsx", index=False)

 

 

x1x2x3x4x5x6x7x8x9x10x11x12x13x14y
122.0811.462441.5850001210012130
022.6772840.1650000216010
029.581.751441.250001228010
021.674.7216372981530111112011
120.178.172641.96111402601591
031.594380530.5852882.22917525811202183.760997111
117.426.52340.12500002601010
058.674.4621183.0411602435611
127.8311283000021765380
055.757.082486.7511312100510
133.51.7521482.229175258114122538581
141.425211851161247011
120.671.251881.375113121401023.6530610
134.92521487.511612010011
131.594380532.712842.415002.4245973651232010
148.086.042442.22917525800002026911
129.584.52947.51121233011
018.9292640.7511202885921
1201.251440.1250000214050
022.425.66521142.5851070212932581
028.170.5852640.0410002183.760997110050
019.170.5851640.5851001216010
141.171.3352240.1650000216810
141.581.752440.21102.4245973650216010
119.54.7216372982640.7900002803510
132.751.521385.511312011
122.50.1251440.12500002200710
133.173.041882.0411112180180281
030.6712284211102220201
123.082.52841.0851111126021851
1270.752882.229175258113123121511
020.4210.51148000012154330
152.331.3751889.46102.424597365122001010
123.0811.52982.1251111122902851
142.831.2527413.875011123521130
174.83191110.040120203520
1254.7216372982643100122011
139.5813.9152948.625116127011
047.7582847.87511612012611
047.423214413.8751121251917051
123.17021340.085102.42459736502011
122.581.51640.5400012120680
126.751.12521481.2510002052991
163.330.542840.5851131218010
123.750.4151840.040120212870
  1. 请使用StandardScaler对波士顿房价数据集进行零-均值规范化。
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)
print(X_scaled.shape)

  1. 在上一问规范化后的数据基础上使用PCA对数据进行降维处理(降维后的特征数量为2)。

 

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
print(X_pca)
print(X_pca.shape)

 

这篇关于数据挖掘与分析——数据预处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086059

相关文章

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

MySQL数据脱敏的实现方法

《MySQL数据脱敏的实现方法》本文主要介绍了MySQL数据脱敏的实现方法,包括字符替换、加密等方法,通过工具类和数据库服务整合,确保敏感信息在查询结果中被掩码处理,感兴趣的可以了解一下... 目录一. 数据脱敏的方法二. 字符替换脱敏1. 创建数据脱敏工具类三. 整合到数据库操作1. 创建服务类进行数据库

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒