sklearn机器学习编程练习大全(二)

第11题 从字符串提取标签

DataFrame如下:

在这里插入图片描述
如何将以上的DataFrame变成如下的DataFrame?
在这里插入图片描述
代码如下:

import pandas as pd

df = pd.DataFrame(
        {'tags':['#name#hobby#score', '#python#Java#php#C++', '#country', '#today#tomorrow']}
)
df = df['tags'].str.split('#', expand=True)
df.drop(columns=[0], inplace=True)
df.columns = ['tag1', 'tag2', 'tag3', 'tag4']

第12题 IRIS数据集探索

1、如何加载IRIS数据集?代码如下:

from sklearn.datasets import load_iris
iris = load_iris()

2、如何将IRIS数据集转换成DataFrame形式?代码如下:

from sklearn.datasets import load_iris
import pandas as pd

iris = load_iris()
df = pd.DataFrame(data=iris['data'], columns=iris['feature_names'])

得到如下的DataFrame:
在这里插入图片描述
3、拆分训练和测试集
拆分训练集和测试集需要使用sklearn.model_selection下面的train_test_split函数,函数的参数为特征数据、预估目标和测试集所占的比例,返回值有四个,代码如下:

from sklearn.model_selection import train_test_split
data_train, data_test, target_train, target_test = train_test_split(data, target, test_size=0.3)

第13题 构建模型,计算准确率

1、接上题,构建逻辑回归模型,代码如下:

# 导入逻辑回归模型
from sklearn.linear_model import LogisticRegression   
#  max_iter=1000意思是对训练集训练1000次
model = LogisticRegression(max_iter=1000)

2、训练模型,代码如下:

model.fit(data_train, target_train)
# 查看模型在训练集上的得分,为0.99
model.score(data_train, target_train)
# 查看模型在测试集上的打分,为0.96
model.score(data_test, target_test)

3、混淆矩阵

在这里插入图片描述
4、分类报告
在这里插入图片描述

第14题 预估目标列编码

DataFrame如下:
在这里插入图片描述
如何对target列进行数值的编码,转换成1、0的形式?这里需要借助sklearn的LabelEncoder,完整代码如下:

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
df = pd.DataFrame({
    'name': ['Zhangsan', 'Lisi', 'Wangwu', 'Zhaosi', 'Maliu', 'Zhouqi'],
    'hobby': ['basketball', 'football', 'badminton', np.nan, 'Table Tennis', np.nan],
    'gender': ['male', 'female', 'male', 'male', np.nan, 'female'],
    'weight': [130, 136, 120, 170, np.nan, np.nan],
    'target': ['yes', 'yes', 'no', 'yes', 'no', 'yes']
})
labelEncoder = LabelEncoder()
df['target'] = labelEncoder.fit_transform(df['target'])

再来看一下新的DataFrame:
在这里插入图片描述
逆转换,查看或者再转换为原来的列:

labelEncoder.inverse_transform(df['target'])

得到如下结果:array([‘yes’, ‘yes’, ‘no’, ‘yes’, ‘no’, ‘yes’], dtype=object)

第15题 one-hot编码

DataFrame如下,如何对score列进行one-hot编码?
在这里插入图片描述
使用sklearn的OneHotEncoder类,完整代码如下:

import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder
df = pd.DataFrame({
    'name': ['Zhangsan', 'Lisi', 'Wangwu', 'Zhaosi', 'Maliu', 'Zhouqi'],
    'hobby': ['basketball', 'football', 'badminton', np.nan, 'Table Tennis', np.nan],
    'gender': ['male', 'female', 'male', 'male', np.nan, 'female'],
    'score': ['good', 'bad', 'normal', 'normal', 'good', 'good'],
    'weight': [130, 136, 120, 170, np.nan, np.nan],
    'target': ['yes', 'yes', 'no', 'yes', 'no', 'yes']
})

oneHotEncoder = OneHotEncoder(sparse_output=False)
oneHotEncoder.fit(df[['score']])
oneHotEncoder.transform(df[['score']])

得到的结果如下:
在这里插入图片描述
如何查看该数组中的元素对应的是原来的哪个分类呢?使用oneHotEncoder的categories_属性:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值