bbbbbb

#因为NumPy数组在数值运算方面的效率优于Python提供的list, 所以灵活掌握NumPy中数组的创建和基础的运算是有必要的.请使用NumPy库,编写Python代码完成下列操作!
#1启动JupyterNotebook创建一个Notebook。
#(2)创建一个数值从0至1,间隔为0.01的数组arr1。
import numpy as np

arr1 = np.arange(0, 1.01, 0.01)

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

arr2 = np.random.randn(101)

#对数组arr1和数组arr2进行四则运算,并输出其结果。(四则运算包括加、减、乘余运算)

print('和是:\n', arr1 + arr2)

print('差是:\n', arr1 - arr2)

print('积是:\n', arr1 * arr2)

print('商是:\n', arr1 / arr2)

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

print('排序后:\n', np.sort(arr2))

print('和:\n', np.sum(arr2))

print('均值:\n', np.mean(arr2))

print('标准差:\n', np.std(arr2))

print('最小值:\n', np.min(arr2)

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

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




#2.请编写Python代码,对鸢尾花数据完成下列操作:
#(1)读取数据文件iris.csv, 储存为数据框iris, 并将数据框的列名称从左至右依次修改为
#"sepal_length""sepal_width""petal_length""petal_width""class".


import pandas as pd

iris = pd.read_csv('iris.csv', header=None)

iris.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']

#将数据框iris中"petal_length"列的第0行至第9行设置为缺失值。(注意:在Python中,索引为0开始.)
iris.loc[0:9, 'petal_length'] = None


#(3)将数据框iris中"petal_length"列的缺失值全部替换为1.0。

iris['petal_length'].fillna(1.0, inplace=True)

#删除数据框iris中"cass"列.del iris['class']


#(5)将数据框iris的前3行设置为缺失值。

iris.iloc[0:3, :] = None

#(6)删除数据框isir中存在缺失值的行。

iris.dropna(how='any', inplace=True)


#(7)重新设置数据框iris的行索引.

iris.reset_index(drop=True, inplace=True)

#将数据框iris保存到当前工作路径下并命名为iris_new.csv.
iris.to_csv('iris_new.csv')




#3.葡萄酒是以葡萄为原料酿造的一种果酒。葡萄酒的品种很多,因葡萄的栽培、葡萄酒生产工艺条件的不同,产品风格各不相同。Wine数据集包含3种不同的葡萄酒的记录共178条。其中,每个特征对应葡萄酒的每种化学成分,并且都属于连续型数据,诵过对wine数据集的数据进行聚类,实现葡萄酒的类别划分.
#请依据wine数据集,编写Python代码完成下列操作:

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

import pandas as pd

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

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

print(wine.isnull().sum())

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

wine_class = wine['Class'].value_counts()

import matplotlib.pyplot as plt

plt.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.

wine_data = wine.iloc[:, 1:14]

wine_label = wine.iloc[:, 0]

#(5)将数据划分为训练集和测试集,训练集和测试集样本数比例为8:2,并将训练集数据、测试集数据、训练集标签和测试集标签分别储存至数据框wine_train、数据框wine_test、数据框wine_train_labelt和数据框wine_test_label.

from sklearn.model_selection import train_test_split

wine_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。

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3, random_state=123).fit(wine_train)


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

from sklearn.metrics import fowlkes_mallows_score

score = fowlkes_mallows_score(wine_train_label.tolist(), kmeans.labels_)

print('wine数据集的类中心为3时,其FMI的评价分值为:%f' % score)


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

for i 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))





#4.国际象棋棋盘是个正方形,由横纵向各8格、颜色一深一浅交错制排列的64个小方格组成,深色格为黑格,浅色格为白格,棋子就在这些格子中移动。接下来创建一个与国际象棋棋盘相似的8×8

#(1)启动JupyterNotebook创建一个Notebook。


#(2)创健一个8×8的全0数组,并储存至数组arr。

import numpy as np

arr = np.zeros((8, 8))

#(3).将数组arr的奇数行奇数列和偶数行偶数列的元素设置为1。

for i in range(8):

    for j in range(8):

        if (i + j) % 2 == 0:
            arr[i][j] = 1

#(4).将数组arr转换为矩阵matr1。

matr1 = np.matrix(arr)

#(5).将矩阵matr1转置为矩阵matr2, 并判断矩阵mate1与矩阵matr2是否完全相同。

matr2 = matr1.T

print((matr1 == matr2).all())


#(6)将柜阵matr2存储为当前工作路径下的一个二进制格式的文件matr2.npy。


np.save('matr2.npy', matr2)





#5.招聘数据探索与分析。


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

import pandas as pd

import re

job_info = pd.read_csv('job_info.csv', encoding='GBK', header=None)

job_info.head()


#(2)将数据框job_info的列名称从左至右依次修改为”公司”“岗位”"工作地点”“工资”“发布日期”。

job_info.columns = ['公司', '岗位', '工作地点', '工资', '发布日期']

job_info.head()


#(3)统计数据中需求最多的岗位招聘,并输出其结果。

print(job_info['岗位'].value_counts().index[0])

#(4).获取数据中9月3日发布的招聘信息,并输出其结果。

print(job_info[job_info['发布日期'] == '09-03'])

#(5).获取工作地点在深圳的数据分析师招聘信息,并输出其结果。

job_info.loc[(job_info['工作地点'].apply(lambda x: '深圳' in x)) & (job_info['岗位'] == '数据分析师'), :]


#(6)获取在“工资”列中,以“千 / 月”或“千 / 年”或“万 / 月”或“万 / 年”结尾的数据所在的行的数据,并储存至数据框ob_info_new。

job_info['工资'].str[-1].value_counts()

job_info['工资'].str[-3].value_counts()

index1 = job_info['工资'].str[-1].apply(lambda x: x in ['月', '年'])

index2 = job_info['工资'].str[-3].apply(lambda x: x in ['千', '万'])

job_info_new = job_info[index1 & index2]

job_info_new.shape


#(7)根据“工资”列,在数据框job_info_new中,新增最低工资和最高工资两列,列名分别设置为“最低工资(元 / 月)”和“最高工资(元 / 月)”。(
   # 注意:这两列数据的单位是“元/月”,例如:若2-2.5万/月,则最低工资为20000,最高工资为25000.)


def get_max_min_value(x):
    try:

        if x[-3] == '万':

            a = [float(i) * 10000 for i in re.findall('\c+\.?\c*', x)]

        elif x[-3] == '千':

            a = [float(i) * 1000 for i in re.findall('\c+\.?\c*', x)]

        if x[-1] == '年':
            a = [i / 12 for i in a]

    except:

        pass

    return a


salary = job_info_new['工资'].apply(get_max_min_value)

job_info_new['最低工资'] = salary.str[0]

job_info_new['最高工资'] = salary.str[1]





#6.sklean库不仅囊括了很多机器学习的算法,而但也自带了许多经典的数据集,鸢尾花数据集就是其中之一。鸢尾花数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个特征,分别为SepalLength(
#花萼长度)、SepaIWidth(花萼宽度)、PetalLength(花瓣长度)、PetalWidth(花瓣宽度),通过这4个特征可划分鸢尾花的美的类别。请根据鸢尾花数据,编写Python代码完成下列操作:
#(1)使用sklearn库加载鸢尾花数据和数据标签,将鸢尾花数据储存至数据框data, 数据标签储存至数据框label。

from sklearn.datasets import load_iris

iris = load_iris()

data = iris['data']

label = iris['target']


#(2)统计数据中鸢尾花的类别数,并输出其结果。

print(len(set(label)))


#(3)以花萼长度为x轴,花萼宽度为y轴,绘制并展示散点图。

import matplotlib.pyplot as plt

plt.scatter(data[:, 0], data[:, 1])

plt.show()

#( 4).将加载好的鸢尾花数据集划分成训练集和测试集两部分,训练集和测试集样本数比例为8:2,井将训练集数据、测试集数据.训练集标签和测试集标签分别储存至数据框x_train, 数据框x_test, 数据框y_train和数据框y_tes.

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(data, label, test_size=0.2)

#(5)对数据框x_train和数据框x_test进行离差标准化,将标准化后的训练集和测试集数据分别储存至数据框scaler_x_train和数据框scler_x_test(注意:测试集数据需使用和训练集数据相同的规职则进行标准化。)

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler().fit(x_train)

scaler_x_train = scaler.transform(x_train)

scaler_x_test = scaler.transform(x_test)

#(6).构建决策树分类模型,命名为model, 并进行模型训练.

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier()

model.fit(scaler_x_train, y_train)


#(7)对构建的模型进行性能评估,并输出其结果。(性能评估包括计算精确率、召回率和F1值等分类评估指标、)

from sklearn.metrics import classification_report

pre = model.predict(scaler_x_test)

res = classification_report(y_test, pre)

print(res)









#7.NumPy是用于数据科学计算的库。请使用NumPy库,编写Python代码求解各坐标点之间的距离。


#(1)启动JupyterNotebook创建一个Notebook。

#(2).随机生成100个二维坐标点,并储存至数组arr1。

import numpy as np

x = np.linspace(0, 10, 100)

y = np.linspace(10, 20, 100)

arr1 = np.array((x, y)).T

#(3)计算各样本点之间的欧氏距离,并储存至数组arr2。

arr2 = []

for i in range(len(arr1)):
    for j in range(len(arr1)):

a = np.sqrt((arr1[i, 0] - arr1[j, 0]) ** 2 + (arr1[i, 1]) ** 2)

arr2.append(a)

arr2 = np.array(arr2)

#(4)将数组arr2的形状转换为(100, 100)。

arr2 = arr2.reshape(100, 100)

#(5)将数组arr2存储为当前工作路径下的一个二进制格式的文件arr2.npy。

np.save('arr2.npy', arr2)










#8.用户用电量数据探索与分析。data数据集为用户用电量数据,其中包含3个字段,具体特征说明如下:特征名称特征说明CONS_NO表示用户编号1 - 200的200位电力用户DATA_DATE表示时间,如2015 / 1 / 1表示2015年1月1日KWE表示电量请根据用户用电量数据,编写Python代码完城下列操作:
#(1)读取数据文件data.csv, 并储存为数据框data。

import pandas as pd

data = pd.read_csv('data.csv', parse_dates=['DATA_DATE'], encoding='gbk')

#2将数据框data转换为行索引为用户编号、列索引为时间、值为用户用电量的数据透视表data_new。
data_new = pd.pivot_table(data=data, values='KWH', index='CONS_NO', columns='DATA_DATE')


#(3)采用四分位法对透视表data_new中的异常数据进行识别并处理。

def clear_(x=None):
    QL = x.quantile(0.25)

    QU = x.quantile(0.75)

    IQR = QU - QL

    x[((x > QU + 1.5 * IQR) | (x < QU - 1.5 * IQR))] = None

    return x


data_new.apply(clear_, axis=0)


#(4)构造持证1:统计每个用户用电数据的基本统计量(基本统计量包括最大值、最小值、均值、中位数),并将结果储存至数据框feature1。

feature1 = data_new.agg(['max', 'min', 'mean', 'median'], axis=1)


#(5)构造特证2:将每个用户用电数据按日差分后,求取基本统计量(基本统计量包括最大值、最小值、均值.中位数),将结果储存至数据框feature2。

feature2 = data_new.diff(axis=1).agg(['max', 'min', 'mean', 'median'], axis=1)

#构造特征3:求每个用户的5 % 分位数,并将结果储存至数据框feature3.
feature3 = data_new.quantile(0.05, axis=1)

#(7)构造特征4:统计每个用户的日用电量在其最大值0.9倍以上的次数,并将结果储存至数据框feature3.

feature4 = data_new.apply(lambda x: sum(x > x.max() * 0.9), axis=1)

#合井特征1、特征2、特征3和特征4,并储存孕数据框feature4。
feature = pd.concat([feature1, feature2, feature3, feature4], axis=0)

#将数据框feature保存到当前工作路径下并命名为feature.csv。
feature.to_csv('feature.csv')









#9.泰坦尼克号是英国白星航运公司下辖的一搜奥林匹克级HYPERLINK
#https: // baike.baidu.com / item / % E6 % B8 % B8 % E8 % BD % AE / 629860”\t"_blank”游轮,1909年在哈兰德与沃尔夫造船厂动工建造.1911年下水,1912年完工试航泰坦尼克号是当时世界上体积最庞大、内部设施最豪华的客运轮船,有“永l不沉没”的美誉。然而不幸的是,在它的处女航中,泰坦尼克号便遭厄运。1912年4月14日,泰坦尼克号与一座冰山相撞,造成右舷船艏至船中部破裂,五间水密舱进水.4
#月15日,泰坦尼克船体断裂成两截后沉入大西洋底3700米处。2224名船员及乘客中,1517人丧生。经过探究发现,似乎有些人比其他人更有生存的可能。接下来通过其生存与遇难的人的数据,预测乘客生还人数。数据文件为titanic.csv, 具体特征说明如下:
#特征名称特征说明PassengerId乘客编号Survived是否生还。1为生还,0为未生还class船舱号Sex性别Fare船票价格SibSp妹个数Parch父母子女个数请根据数据,编写Python代码完成下列要求:
#(1)读取数据文件titanic.csv, 并储存为数据框titanic.

import numpy as np

import pandas as pd

titanic = pd.read_csv('titanic.csv')

#计算乘客生还人数,并输出其结果.
titanic['Survived'].sum()

#绘制男女乘客比例饼图,并添加标题”男女乘客比例饼图”。
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'SimHei'

plt.rcParams['axes.unicode_minus'] = False

sex_ = titanic['Sex'].value_counts()

plt.pie(sex_.values, labels=['Male', 'Female'], autopct='%1.1f%%', startangle=90)

plt.title('男女乘客比例饼图')

plt.show()

#绘制船票价格直方图,并添加x轴标题”船票价格”和y轴标题”频次”。(注意:需先对”船票价格”进行升序排序)
df = titanic['fare'].sort_values(ascending=False)

plt.figure()

plt.hist(df, bins=(np.arange(0, 550, 10)))

plt.xlabel('船票价格')

plt.ylabel('频次')

plt.title('船票价格直方图')

plt.show()


#(5)在数据框titanic中,新增一列为家庭人数,并将列名设置为familysize
"。

titanic['familysize'] = titanic.loc[:, 'SibSp'] + titanic.loc[:, 'Parch'] + 1


#(6)修改数据框titanic的”Sex”列,使用数值”1”和”0”分别代替”Sex”列中的”male”和”female”。

titanic['Sex'] = titanic['Sex'].map({'female': 0, 'male': 1}).astype(int)

#(7)根据“Pclass”、“Sex”和“familysize”这三个特征预测乘客是否生还。将数据集划分成训练集和测则试集两部分,训练集和测试集样本数比例为8: 2

from sklearn.model_selection import train_test_split

x = titanic.loc[:, ['Pclass', 'Sex', 'familysize']]

y = titanic.loc[:, ['Survived']]

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)

#构建KNN模型,命名为clf, 并进行模型训练。
from sklearn import neighbors

clf = neighbors.KNeighborsClassifier(n_neighbors=20)

clf.fit(x_train, y_train)

#使用测试集数据进行模型预测,并将结果储存至数组pre。
pre = clf.predict(x_test)

#对构建的模型进行性能评估,并输出其结果。(性能评估包括计算精确率、召回率和F1值等分类评估指标。)
from sklearn.metrics import classification_report

res = classification_report(y_test, pre)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值