✘one✘

**一**

因为NumPy数组在数值运算方面的效率优于Python提供的list,所以灵活掌握NumPy中数组的创建和基础的运算是有必要的。请使用NumPy库,编写Python代码完成下列操作:启动Jupyter Notebook创建一个Notebook。(2分)创建一个数值从0至1,间隔为0.01的数组arr1。(2分)创建一个包含101个服从正态分布的随机数的数组arr2。(注意:数组arr2为一维数组)(2分)对数组arr1和数组arr2进行四则运算,并输出其结果。(四则运算包括加、减、乘、除运算)(2分)对数组arr2进行简单的统计分析,并输出其结果。(统计分析包括对数组进行升序排序、求和、求均值、求标准差和求最小值操作)。(5分)

----------------分割线-------------------

#(1)启动JupyterNotebook创建一个Notebook。(2分)C:\Users\Administartor>jupyernotebook#(2)创建一个数值从0至1,间隔为0.01的数组arr1。(2分)

import numpy as nparr1 =np.arange(0, 1.01, 0.01)

#(3)创建一个包含101个服从正态分布的随机数的数组arr2。(注意:数组arr2为一维数组)(2分)

arr2 = np.random.randn(101)

#(4)对数组arr1和数组arr2进行四则运算。(四则运算包括加、减、乘、除运算)(2分)

print('两数组之和为:\n', arr1 + arr2)print('两数组之差为:\n', arr1 - arr2)print('两数组之积为:\n', arr1 * arr2)print('两0数组之商为:\n', arr1/ arr2)

#(5)对数组arr2进行简单的统计分析。(统计分析包括对数组进行升序排序、求和、求均值、求标准差和求最小值操作)。

print('排序后数组为:', np.sort(arr2))print('数组的和为:', np.sum(arr2))print('数组的均值为:', np.mean(arr2))print('数组的标准差为:', np.std(arr2))print('数组的最小值为:', np.min(arr2))

#(6)将数组arr1和数组arr2存储为当前工作路径下的一个二进制格式的文件arr.npz。(2分)

np.savez('arr.npz', arr1, arr2)

**二**

请编写Python代码,对鸢尾花数据完成下列操作:读取数据文件iris.csv,储存为数据框iris,并将数据框的列名称从左至右依次修改为“sepal_length”“sepal_width”“petal_length”“petal_width”“class”。(3分)将数据框iris中“petal_length”列的第0行至第9行设置为缺失值。(注意:在Python中,索引为0开始。)(3分)将数据框iris中“petal_length”列的缺失值全部替换为1.0。(3分)删除数据框iris中“class”列。(2分)将数据框iris的前3行设置为缺失值。(2分)删除数据框iris中存在缺失值的行。(2分)重新设置数据框iris的行索引。(3分)将数据框iris保存到当前工作路径下并命名为iris_new.csv。(2分)

------------------分割线-----------------

# (1)读取数据文件iris.csv,储存为数据框iris,并将数据框的列名称从左至右依次改修为“sepal_length”“sepal_width”“petal_length”“petal_width”“class”。(3分)

importpandas as pdiris =pd.read_csv('iris.csv', header=None)iris.columns= ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']

# (2)将数据框iris中“petal_length”列的第0行至第9行设置为缺失值。(注意:在Python中,索引为0开始。)(3分)

iris.loc[0:9, 'petal_length'] = None

#(3)将数据框iris中“petal_length”列的缺失值全部替换为1.0。(3分) iris['petal_length'].fillna(1.0,inplace=True)# (4)删除数据框iris中“class”列。(2分)deliris['class']

# (5)将数据框iris的前3行设置为缺失值。(2分)iris.iloc[0:3, :] = None# (6)删除数据框iris中存在缺失值的行。(2分)iris.dropna(how='any',inplace=True)# (7)重新设置数据框iris的行索引。(3分)iris.reset_index(drop=True,inplace=True)#(8)将数据框iris保存到当前工作路径下并命名为iris_new.csv。(2分)iris.to_csv('iris_new.csv')

**三**

葡萄酒是以葡萄为原料酿造的一种果酒。葡萄酒的品种很多,因葡萄的栽培、葡萄酒生产工艺条件的不同,产品风格各不相同。wine数据集包含3种不同的葡萄酒的记录共178条。其中,每个特征对应葡萄酒的每种化学成分,并且都属于连续型数据。通过对wine数据集的数据进行聚类,实现葡萄酒的类别划分。请依据wine数据集,编写Python代码完成下列操作:读取数据文件wine.csv,并储存为数据框wine。(1分)查询据框wine中是否存在缺失值。若存在缺失值,则需对其进行处理;反之,则无需处理。(2分)在wine数据集中,“Class”列为葡萄酒的类别,分别为1、2和3。绘制各类别的数量占比饼图。(4分)将数据框wine的数据和标签进行拆分,分别储存至数据框wine_data和数据框wine_label。(3分)将数据划分为训练集和测试集,训练集和测试集样本数比例为8:2,并将训练集数据、测试集数据、训练集标签和测试集标签分别储存至数据框wine_train、数据框wine_test、数据框wine_train_label和数据框wine_test_label。(3分)构建聚类数目为3的K-Means模型,并命名为kmeans。(4分)对比真实标签和聚类标签,求取FMI(FMI为聚类模型的评价指标),并输出其结果。(4分)当聚类数目为2~10类时,确定最优聚类数目。(4分)

-----------------分割线------------------

#(1)读取数据文件wine.csv,并储存为数据框wine。(1分)

importpandas as pdwine= pd.read_csv('wine.csv', encoding='gb18030')

#(2)查询据框wine中是否存在缺失值。若存在缺失值,则需对其进行处理;反之,则无需处理。(2分)

print(wine.isnull().sum()) # 由此可知无空值,无需处理

#(3)在wine数据集中,“Class”列为葡萄酒的类别,分别为1、2、3。绘制各类别的数量占比饼图。(4分)

wine_class= wine['Class'].value_counts() # 各类别数量importmatplotlib.pyplot as pltplt.rcParams['font.sans-serif']= 'SimHei' # 正常显示中文plt.rcParams['axes.unicode_minus'] = False # 正常显示符号plt.pie(wine_class,labels=wine_class.index, autopct='%.2f%%') # 小数点个数plt.title('各红酒类别占比图')plt.show()

#(4)将数据框wine的数据和标签进行拆分,分别储存至数据框wine_data和数据框wine_label。(3分)

wine_data= wine.iloc[: , 1: 14] # 数据wine_label= wine.iloc[: , 0] # 标签

#(5)将数据划分为训练集和测试集,训练集和测试集样本数比例为8:2,并将训练集数据、测试集数据、训练集标签和测试集标签分别储存至数据框wine_train、数据框wine_test、数据框wine_train_label和数据框wine_test_label。(3分)fromsklearn.model_selection import train_test_splitwine_train,wine_test, wine_train_label, wine_test_label = train_test_split\(wine_data,wine_label, test_size=0.2, random_state=42)

#(6)构建聚类数目为3的K-Means模型,并命名为kmeans。(4分)

fromsklearn.cluster import KMeans # 导入分类器库kmeans= KMeans(n_clusters = 3, random_state=123).fit(wine_train) # 构建并训练模型

#(7)对比真实标签和聚类标签,求取FMI(FMI为聚类模型的评价指标),并输出其结果。(4分)

fromsklearn.metrics import fowlkes_mallows_scorescore= fowlkes_mallows_score(wine_train_label.tolist(), kmeans.labels_)print('wine数据集的类中心为3时,其FMI的评价分值为:%f'%score)

#(8)当聚类数目为2~10类时,确定最优聚类数目。(4分)

fori in range(2, 11):kmeans =KMeans(n_clusters=i, random_state=123).fit(wine_train)score =fowlkes_mallows_score(wine_train_label, kmeans.labels_)print('wine数据聚%d类FMI评价分值为:%f' %(i, score))#由此可知,最优聚类数目为2

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值