数据探索与数据预处理

实验内容:

1.对鸢尾花数据集(iris.csv)的4个特征——萼片长度(sepal_len)、萼片宽度(sepal_wid)、花瓣长度(petal_len)、花瓣宽度(petal_wid)进行标准化。(分别使用最小最大规范化、零均值规范化、小数定标规范化)。

2.用主成分分析方法对鸢尾花数据集(iris.csv)进行维归约。

3.数据元组中age的值如下(按递增序):13,15,16,18,19,20,20,21,22,22,25,25,25,30,33,33,35,35,36,40,45,46,52,70。

问题:

(1)使用等深分箱(箱深为3)的平均值平滑方法对上述数据进行平滑。

(2)使用最小-最大规范化方法,将age的属性值35转换到[0,1.0]区间。

(3)使用z-score规范化方法转换age的属性值35,其中age的标准差为12.94年。

(4)使用小数定标规范化转换age属性值35。

(5)画出属性age宽度为10的等宽直方图。

实验代码:

#1
import numpy as np
import pandas as pd

data=pd.read_csv('D:/Users/Administrator/Desktop/iris1.csv',usecols=[0,1,2,3])
#指定读取哪几列,不要列名 names=None
data=np.array(data,dtype='float64')#类型装换
#data=np.array(date[:,3])
#print(data)

def min_max(data):
    M=(data-data.min())/(data.max()-data.min())
    print('最小最大规范化为:\n',M)


def z_score(data):
    Z=(data-np.median(data))/np.var(data)
    print('零均值标准化为:\n',Z)


def V_m(data):
    V=data/10
    print('小数定标规范化为:\n',V)

min_max(data)
z_score(data)
V_m(data)
#2.
from sklearn import decomposition

def PCA(data):
    pca = decomposition.PCA()
    pca.fit(data)                                        
    pca.n_components = 4                    
    X_reduced = pca.fit_transform(data) 
    return(X_reduced)
print(PCA(data))
#3.
import numpy as np
import math
from sklearn import preprocessing
import matplotlib.pyplot as plt


age=np.array([13,15,16,18,19,20,20,21,22,22,25,25,25,30,33,33,35,35,36,40,45,46,52,70])
#x.sort()升序排序
# 等深分箱法,深度为3
# 数据长度除以深度3,则为划分的数组行数
depth = age.reshape(int(age.size/3),3)
# 划分后的等深箱
print('划分后的等深箱:\n',depth)

# 按平均值平滑,初始化mean_depth
mean_depth = np.full([5,3],0)
#等深分箱法、均值平滑技术
for i in range(0,5):
    for j in range(0,3):

#第i行算数平均值
        mean_depth[i][j]=int(depth[i].mean())
# 按平均值平滑后的等深箱

print('问题1-平均值平滑后的等深箱:\n',mean_depth)

dep=np.array([35,35])
depth_d=dep.reshape(int(dep.size/2),2)
min_max_sklearn=preprocessing.MinMaxScaler()
age_minmax=min_max_sklearn.fit_transform(depth_d)
print('问题2-最小-最大规范化为:\n',age_minmax)


def z_score(dep):
    Z=(35-np.mean(age))/12.4
    print('问题3-z_score规范化为:\n',Z)

def V_m(dep):
    V=dep/100
    print('问题4-小数定标规范化为:\n',V)

z_score(dep)
V_m(dep)


#问题5--直方图

fig = plt.figure(figsize=(9,4))
 

plt.hist(age,bins = 10,rwidth=10) # 指定条形的相对宽度

plt.title('年龄直方图');
plt.xlabel("年龄")
plt.ylabel("个数")
plt.show()

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹿毅十川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值