机器学习之文本特征识别

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, confusion_matrix
import openpyxl
import joblib

# 1. 准备训练数据集
data = pd.read_csv('address_data.csv', encoding='GBK')

# 2. 特征工程
vectorizer = CountVectorizer(max_features=7000)
X = vectorizer.fit_transform(data['Address']).toarray()
y = data['IsFake']

# 检查是否已存在模型文件
try:
    classifier = joblib.load('model.joblib')
    model_trained = True
except FileNotFoundError:
    classifier = None
    model_trained = False

while True:
    user_input = input("请输入 '开始训练' 或 '开始预测' 或 'exit' 退出: ")

    if user_input.lower() == 'exit':
        if classifier:
            # 退出前保存模型
            joblib.dump(classifier, 'model.joblib')
        print("退出程序。")
        break
    elif user_input.lower() == '开始训练':
        if not classifier:
            # 可在这里增加其他模型算法
            classifier = MultinomialNB()
        # 开始训练模型
        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
        classifier.fit(X_train, y_train)
        y_pred = classifier.predict(X_test)
        accuracy = accuracy_score(y_test, y_pred)
        confusion = confusion_matrix(y_test, y_pred)
        print("模型已经训练完成。")
        print("准确性: ", accuracy)
        print("混淆矩阵:\n", confusion)
        model_trained = True
    elif user_input.lower() == '开始预测':
        if not model_trained:
            print("请先训练模型,然后再进行预测。")
        else:
            # 加载已训练的模型
            if not classifier:
                classifier = joblib.load('model.joblib')
            # 加载新数据集进行预测
            new_data = pd.read_csv('new_address_data.csv', encoding='GBK')
            X_new = vectorizer.transform(new_data['Address']).toarray()
            predictions = classifier.predict(X_new)

            # 将预测结果存储在一个新的数据框中
            new_data['Predicted_IsFake'] = predictions

            # 导出预测结果到一个 Excel 文件
            new_data.to_excel('address_predictions.xlsx', index=False, engine='openpyxl')  # 指定所需的 Excel 文件名

            print("预测结果已保存到 'address_predictions.xlsx' 文件中")
    else:
        print("无效的输入,请输入 '开始训练' 或 '开始预测' 或 'exit'。")

当我们面对一个乱写的地址时,该怎么利用机器去学习,让机器通过模型去帮助我们判断呢?

本篇基于朴素索叶斯模型去开发代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值