保姆教程之python数据分析之模型调用,附源码!

python数据分析之模型调用

进入模型调用,就是数据分析的最后一步了…

前面的工作已经把模型训练好了,接下来就是调用它,用真实的数据来实现预测或者分类。

当我们调用模型时,就是利用这个训练好的黑箱。通过接收新来的数据,输出属于哪一类(分类器模型)。

在这里插入图片描述

当我有新的数据集产生时,我应该如何调用呢?

想想把大象关在冰箱里面分几步?
答案是:
1.打开冰箱
2.把大象放入冰箱
3.关闭冰箱门
总共3

模型调用也是一样的

举一个全连接的神经网络分类器的栗子

步骤:

  1. 把黑箱拿出来
  2. 输入input
  3. 输出output
#模型调用
from keras.models import load_model
from sklearn.preprocessing import LabelEncoder
model = load_model("model.h5")

#对数据进行预处理,处理成与你训练时的数据类型格式一样就好了。
X,y=get_database('test')#这里我封装成了一个函数,直接接受一个数据库名作为参数。
# 使用LabelEncoder将字符串标签转换为整数标签
label_encoder = LabelEncoder()
y_encoded = label_encoder.fit_transform(y)
# 数据预处理:将特征进行标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

#预测
predictions = model.predict(X_scaled)

predictions输出

在这里插入图片描述

**稍微解释一下:**在神经网络的分类问题中,通常会给每个类别分配一个唯一的标签或索引。在输出结果中,每个位置对应的索引即代表了模型预测的类别。索引从0开始,依次递增。

因此,第一个类别对应的索引是0。在你的输出结果中,第一个样本的预测概率分布为 [9.9566501e-01 3.3177581e-05 1.9503545e-04 3.9907331e-03 1.1607822e-04],第一个位置的概率最高,表示模型预测该样本属于第一个类别(索引为0)的概率最高。

比如有5类,分成苹果、橙子、梨子、橘子、柚子五类。index是从0-4,当一个predictions预测概率分布为[0.8,0.05,0.1,0.01,0.04],此时应该是:0-苹果。哪应该如何把这个对应起来?

在这里插入图片描述

一开始想的办法是:找到每个中样本中最大的概率值,记录下它所在的index,再定义映射关系的字典,最后进行匹配。匹配后再与最初的y数据进行对比,计算准确率!即可完成任务。

这里,请允许我再次得为python股掌👏

因为你不用写了,直接调用方法就好了

# 获取每个样本预测概率最高的类别对应的整数标签
predictions_encoded = np.argmax(predictions, axis=1) #记录index
# 使用LabelEncoder的inverse_transform方法将整数标签转换为原始字符串标签
predictions_original = label_encoder.inverse_transform(predictions_encoded)
# 计算准确率
accuracy = accuracy_score(y_true=y, y_pred=predictions_original)

到此,整个模型调用和数据分析的任务基本结束了!

在这里插入图片描述

最后附上我的源码,需要数据的朋友可以后台私信我!


"""
@contact: 微信 XQCqazwsx
@time: 2024/2/29 19:30
@author: 瑞翼工人
"""

if __name__ == '__main__':

    model = load_model('my_model.h5')
    X,y=get_database('final_gs')
    # 使用LabelEncoder将字符串标签转换为整数标签
    label_encoder = LabelEncoder()
    y_encoded = label_encoder.fit_transform(y)
    # 数据预处理:将特征进行标准化
    scaler = StandardScaler()
    X_scaled = scaler.fit_transform(X)
    #自己尝试写的过程
    # label_mapping = pd.DataFrame({'Original Label':y, 'Encoded Label':y_encoded})
    # map_2 = label_mapping.groupby('Original Label').first()
    predictions = model.predict(X_scaled)
    # 获取每个样本预测概率最高的类别对应的整数标签
    predictions_encoded = np.argmax(predictions, axis=1)
    # 使用LabelEncoder的inverse_transform方法将整数标签转换为原始字符串标签
    predictions_original = label_encoder.inverse_transform(predictions_encoded)
    # 计算准确率
    accuracy = accuracy_score(y_true=y, y_pred=predictions_original)
    # 打印预测结果
    print(predictions_original)
    print(accuracy)

如果对你有用,请给我点个免费的赞,我们一起进步!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值