第4关:Car Evaluation (cls)

 第1关:Manhattan Distance

任务描述

计算并返回ab的曼哈顿距离。

设: a=[a1​, a2​, ..., an​] b=[b1​, b2​, ..., bn​] 那么ab的曼哈顿距离为: 

import numpy as np

def Student(a, b):
    return np.sum(np.abs(a-b))

第2关:Polynomial Features

任务描述

对于给定的整数k和numpy一维数组a=[a1​, a2​, ..., an​],添加由a1​~an​组成的最多k次的所有多项式项,并返回处理结果。

例如 k = 2 a = [2, 6, 9, 4]

返回的numpy数组是[1, 2, 6, 9, 4, 4, 12, 18, 8, 36, 54, 24, 81, 36, 16]

import numpy as np
from sklearn.preprocessing import PolynomialFeatures
def Student(k, a):
    poly = PolynomialFeatures(degree=k, include_bias=True)
    a = np.array(a).reshape(1, -1)
    a_poly = poly.fit_transform(a)
    return a_poly.flatten()

第3关:Clustering

任务描述

参数是numpy二维数组X,它的形状(n,m)表示有n个样本、且每个样本都是m维的。根据混合高斯分布,将这n个样本聚成两类,分别记为0类1类,返回聚类结果两个聚类中心

例如

返回两项内容:

  1. 聚类结果,例如[0, 1, 0, 1, 1, 1, 1, 0, 0]
  2. 两个聚类中心,例如[[2.7, 9.2], [13.9, 13.0]]
import numpy as np
from sklearn.mixture import GaussianMixture
def Student(X):
    n,m=X.shape
    gmm=GaussianMixture(n_components=2)
    gmm.fit(X)
    labels=gmm.predict(X)
    centers=gmm.means_
    return labels,centers

第4关:Car Evaluation (cls)

问题描述

数据集“car”描述了汽车的特征和评估(类别)。

关于汽车的特征有6项:

  • 买入价:可能的值有0(低)1(中等)2(高)、 3(很高)四种
  • 维护费:可能的值有0(低)1(中等)2(高)、 3(很高)四种
  • 门数:可能的值有2345四种
  • 载客量:可能的值有245三种
  • 车尾箱:可能的值有0(小)1(中)2(大)三种
  • 安全性:可能的值有0(低)1(中等)2(高)三种

相应地,每辆车有一个评估,但不是以数值形式标记的,而是以类别形式标记的。评估类别有四种,分别是:unacc, acc, good, vgood,分别表示不可接受可接受很好

完整的数据集的前13行呈现如下的样子:

任务描述

在右侧编辑器补充Student函数代码,完成以下任务:

  1. 打开“/data/bigfiles/car_train.csv”并读取里面的数据进行学习。考生可以根据需要进行数据预处理和选择适当的模型。这个数据集具有所有特征和评估标签。

    ,

  2. 打开“/data/bigfiles/car_test_X.csv”并读取里面的数据进行预测。这个数据集只有所有特征,没有评估类别,因为评估类别就是要预测的结果。

    ,

  3. 返回预测结果。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

def Student():
    # 读取训练数据
    train_data = pd.read_csv('/data/bigfiles/car_train.csv')
    X_train = train_data.drop('评估', axis=1)
    y_train = train_data['评估']

    # 读取测试数据
    test_data = pd.read_csv('/data/bigfiles/car_test_X.csv')
    X_test = test_data

    # 数据预处理
    # 处理缺失值
    X_train.fillna(X_train.mean(), inplace=True)
    X_test.fillna(X_test.mean(), inplace=True)

    # 特征编码
    le = LabelEncoder()
    for col in X_train.columns:
        if X_train[col].dtype == 'object':
            X_train[col] = le.fit_transform(X_train[col])
            X_test[col] = le.transform(X_test[col])

    # 划分训练集和验证集
    X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)

    # 选择模型并训练
    model = DecisionTreeClassifier()
    model.fit(X_train, y_train)

    # 预测
    y_pred = model.predict(X_val)

    # 计算准确率
    accuracy = accuracy_score(y_val, y_pred)

    # 预测测试集
    y_test_pred = model.predict(X_test)

    return y_test_pred

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值