Trae插件下载链接
总结
使用过Builder后,我的感觉就是,可以通过嘴写代码!!雄起吧,我们程序员的口语交际能力。同时重点要先把自己的编码环境设置好,否则很麻烦
参考
安装过程单击Trae插件下载链接,按照要求就可以
掘金社区地址
Trae下载地址
管理插件
Trae 从入门到实践:AI 编码的妙笔生花
关于Trae插件
智能代码助手简介
代码助手可以快速的帮我们补充代码,修改代码,添加注释,翻译中英文,起变量函数名字等操作,十分的友好,这类代码助手现阶段有较多的产品,Trae插件就是原先的 MarsCode编程助手
官方链接地址如下:
https://docs.trae.com.cn/plugin/what-is-trae-plugin?_lang=zh
本文主要完成Trae的Builder 测评任务。
Builder测评
Builder简介
更多关于Builder简介见如下链接:
https://docs.trae.com.cn/plugin/builder
Builder 可以帮助你
从 0 到 1
开发一个完整的项目。你可以将它无缝融入到项目构建的流程中。
在 Builder 模式下,AI 助手在回答时会根据需求调用不同的工具,包括分析代码文件的工具、编辑代码文件的工具、运行命令的工具等等。从而让回答更精确、更有效。
Builder 的工作流程
Builder 模式下,AI 助手会主动读取当前项目中的文件内容,拆解任务并逐步执行,包括:
提取相关上下文
创建或修改文件
生成并运行终端命令
分析命令运行状态
开发一个贝叶斯算法的案例
在Builder模式下,输入如下问题
写一个基于sklearn的贝叶斯算法的案例,适合计算机专业大三同学学习的,要求包括导入依赖,数据集加载,拆分数据集,数据集探索,数据集处理,实例化三种贝叶斯算法,并分别基于三种贝叶斯算法完成模型训练,模型验证,模型评估,模型预测,模型保存,模型加载。
可以看到Builder的思考过程和检索本地文件的过程,基于此,会生成一个代码并保存在文件中。
单击全部采纳,即可查看到新创建的文件。这个过程比较丝滑,比较解压,5s生成96行代码。
完整的代码如下
# 导入依赖
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import joblib# 数据集加载
iris = datasets.load_iris()
X = iris.data # 特征
y = iris.target # 标签# 数据集拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y
)# 数据集探索
print("数据集基本信息:")
pd.DataFrame(X, columns=iris.feature_names).info()print("数据集行数和列数:", X.shape)
print("类别分布:", np.bincount(y))# 数据集处理
# 标准化处理
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)# 归一化处理
minmax_scaler = MinMaxScaler()
X_train_normalized = minmax_scaler.fit_transform(X_train)
X_test_normalized = minmax_scaler.transform(X_test)# 实例化三种贝叶斯算法
gnb = GaussianNB()
mnb = MultinomialNB()
bnb = BernoulliNB()# 模型训练
gnb.fit(X_train_scaled, y_train)
mnb.fit(X_train_normalized, y_train)
bnb.fit(X_train_normalized, y_train)# 模型验证
gnb_scores = cross_val_score(gnb, X_train_scaled, y_train, cv=5)
mnb_scores = cross_val_score(mnb, X_train_normalized, y_train, cv=5)
bnb_scores = cross_val_score(bnb, X_train_normalized, y_train, cv=5)print("高斯贝叶斯交叉验证得分:", gnb_scores)
print("多项式贝叶斯交叉验证得分:", mnb_scores)
print("伯努利贝叶斯交叉验证得分:", bnb_scores)# 模型评估
gnb_pred = gnb.predict(X_test_scaled)
mnb_pred = mnb.predict(X_test_normalized)
bnb_pred = bnb.predict(X_test_normalized)print("高斯贝叶斯准确率:", accuracy_score(y_test, gnb_pred))
print("多项式贝叶斯准确率:", accuracy_score(y_test, mnb_pred))
print("伯努利贝叶斯准确率:", accuracy_score(y_test, bnb_pred))print("高斯贝叶斯分类报告:\n", classification_report(y_test, gnb_pred))
print("多项式贝叶斯分类报告:\n", classification_report(y_test, mnb_pred))
print("伯努利贝叶斯分类报告:\n", classification_report(y_test, bnb_pred))print("高斯贝叶斯混淆矩阵:\n", confusion_matrix(y_test, gnb_pred))
print("多项式贝叶斯混淆矩阵:\n", confusion_matrix(y_test, mnb_pred))
print("伯努利贝叶斯混淆矩阵:\n", confusion_matrix(y_test, bnb_pred))# 模型预测
new_sample = np.array([[5.1, 3.5, 1.4, 0.2]])
new_sample_scaled = scaler.transform(new_sample)
new_sample_normalized = minmax_scaler.transform(new_sample)print("高斯贝叶斯预测结果:", gnb.predict(new_sample_scaled))
print("多项式贝叶斯预测结果:", mnb.predict(new_sample_normalized))
print("伯努利贝叶斯预测结果:", bnb.predict(new_sample_normalized))# 模型保存
joblib.dump(gnb, 'gnb_model.pkl')
joblib.dump(mnb, 'mnb_model.pkl')
joblib.dump(bnb, 'bnb_model.pkl')# 模型加载
gnb_loaded = joblib.load('gnb_model.pkl')
mnb_loaded = joblib.load('mnb_model.pkl')
bnb_loaded = joblib.load('bnb_model.pkl')print("加载的高斯贝叶斯模型预测结果:", gnb_loaded.predict(new_sample_scaled))
print("加载的多项式贝叶斯模型预测结果:", mnb_loaded.predict(new_sample_normalized))
print("加载的伯努利贝叶斯模型预测结果:", bnb_loaded.predict(new_sample_normalized))
运行下文件,提示如下警告
Builder模式修复代码。
先引用文件bayes_example.py
输入以下问题
#bayes_example.py 根据如下输出结果 修复问题
“d:\ProgramData\Anaconda3\envs\py312\Lib\site-packages\sklearn\metrics_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Usezero_division
parameter to control this behavior.
_warn_prf(average, modifier, f”{metric.capitalize()} is", len(result))
d:\ProgramData\Anaconda3\envs\py312\Lib\site-packages\sklearn\metrics_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Usezero_division
parameter to control this behavior.
_warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))
d:\ProgramData\Anaconda3\envs\py312\Lib\site-packages\sklearn\metrics_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Usezero_division
parameter to control this behavior.
_warn_prf(average, modifier, f"{metric.capitalize()} is", len(result))"
输出如下:
单击全部采纳,既可以完成代码的初步修改,同时会在修改的地方显示颜色对比(红色为源代码绿色为修改后的代码)与是否接收
再次运行,可以看到警告被修复,没有毛病,完美
到此这个代码就已经完成了,完整的代码如下
# 导入依赖
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import joblib# 数据集加载
iris = datasets.load_iris()
X = iris.data # 特征
y = iris.target # 标签# 数据集拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y
)# 数据集探索
print("数据集基本信息:")
pd.DataFrame(X, columns=iris.feature_names).info()print("数据集行数和列数:", X.shape)
print("类别分布:", np.bincount(y))# 数据集处理
# 标准化处理
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)# 归一化处理
minmax_scaler = MinMaxScaler()
X_train_normalized = minmax_scaler.fit_transform(X_train)
X_test_normalized = minmax_scaler.transform(X_test)# 实例化三种贝叶斯算法
gnb = GaussianNB()
mnb = MultinomialNB()
bnb = BernoulliNB()# 模型训练
gnb.fit(X_train_scaled, y_train)
mnb.fit(X_train_normalized, y_train)
bnb.fit(X_train_normalized, y_train)# 模型验证
gnb_scores = cross_val_score(gnb, X_train_scaled, y_train, cv=5)
mnb_scores = cross_val_score(mnb, X_train_normalized, y_train, cv=5)
bnb_scores = cross_val_score(bnb, X_train_normalized, y_train, cv=5)print("高斯贝叶斯交叉验证得分:", gnb_scores)
print("多项式贝叶斯交叉验证得分:", mnb_scores)
print("伯努利贝叶斯交叉验证得分:", bnb_scores)# 模型评估
gnb_pred = gnb.predict(X_test_scaled)
mnb_pred = mnb.predict(X_test_normalized)
bnb_pred = bnb.predict(X_test_normalized)print("高斯贝叶斯准确率:", accuracy_score(y_test, gnb_pred))
print("多项式贝叶斯准确率:", accuracy_score(y_test, mnb_pred))
print("伯努利贝叶斯准确率:", accuracy_score(y_test, bnb_pred))print("高斯贝叶斯分类报告:\n", classification_report(y_test, gnb_pred, zero_division=1))
print("多项式贝叶斯分类报告:\n", classification_report(y_test, mnb_pred, zero_division=1))
print("伯努利贝叶斯分类报告:\n", classification_report(y_test, bnb_pred, zero_division=1))print("高斯贝叶斯混淆矩阵:\n", confusion_matrix(y_test, gnb_pred))
print("多项式贝叶斯混淆矩阵:\n", confusion_matrix(y_test, mnb_pred))
print("伯努利贝叶斯混淆矩阵:\n", confusion_matrix(y_test, bnb_pred))# 模型预测
new_sample = np.array([[5.1, 3.5, 1.4, 0.2]])
new_sample_scaled = scaler.transform(new_sample)
new_sample_normalized = minmax_scaler.transform(new_sample)print("高斯贝叶斯预测结果:", gnb.predict(new_sample_scaled))
print("多项式贝叶斯预测结果:", mnb.predict(new_sample_normalized))
print("伯努利贝叶斯预测结果:", bnb.predict(new_sample_normalized))# 模型保存
joblib.dump(gnb, 'gnb_model.pkl')
joblib.dump(mnb, 'mnb_model.pkl')
joblib.dump(bnb, 'bnb_model.pkl')# 模型加载
gnb_loaded = joblib.load('gnb_model.pkl')
mnb_loaded = joblib.load('mnb_model.pkl')
bnb_loaded = joblib.load('bnb_model.pkl')print("加载的高斯贝叶斯模型预测结果:", gnb_loaded.predict(new_sample_scaled))
print("加载的多项式贝叶斯模型预测结果:", mnb_loaded.predict(new_sample_normalized))
print("加载的伯努利贝叶斯模型预测结果:", bnb_loaded.predict(new_sample_normalized))
Vibe Coding 请提供一个api服务吧
还不够,提问
我想基于这个训练好的模型,提供一个基于flask的接口,走起!!
这里多次尝试终于成功了,提示错误
FileNotFoundError: [Errno 2] No such file or directory: ‘scaler.pkl’
再次修复
flask_api.py bayes_example.py 采用"d:/ProgramData/Anaconda3/envs/py312/python.exe d:/pypro/trae插件/flask_api.py"方式运行flask_api.py文件,同时解决这个问题:FileNotFoundError: [Errno 2] No such file or directory: 'scaler.pkl’
修复如下
修复完成,此时代码如下
# 导入依赖
import numpy as np
from flask import Flask, request, jsonify
import joblib
from sklearn.preprocessing import StandardScaler, MinMaxScalerapp = Flask(__name__)# 加载模型和数据处理器
gnb = joblib.load('gnb_model.pkl')
mnb = joblib.load('mnb_model.pkl')
bnb = joblib.load('bnb_model.pkl')
scaler = joblib.load('scaler.pkl')
minmax_scaler = joblib.load('minmax_scaler.pkl')@app.route('/predict', methods=['POST'])
def predict():data = request.get_json(force=True)sample = np.array([data['features']])# 数据处理sample_scaled = scaler.transform(sample)sample_normalized = minmax_scaler.transform(sample)# 模型预测gnb_pred = gnb.predict(sample_scaled)[0]mnb_pred = mnb.predict(sample_normalized)[0]bnb_pred = bnb.predict(sample_normalized)[0]return jsonify({'gaussian_nb': int(gnb_pred),'multinomial_nb': int(mnb_pred),'bernoulli_nb': int(bnb_pred)})if __name__ == '__main__':app.run(debug=True)
继续提问
提供一个配套的curl测试脚本,用来验证模型的效果
输出如下
为了看到效果,可以在批处理文件的后面,添加pause
@echo off
curl -X POST http://127.0.0.1:5000/predict -H “Content-Type: application/json” -d “{“features”: [5.1, 3.5, 1.4, 0.2]}”
pause
打开资源管理器,运行批处理文件
还不够,主公请鞭笞我吧(黄盖)
结合flask提供的api接口,提供一个html文件,可以进行前后端交互测试
打开页面,如下。感觉整体而言是干脆利落的。
再次提问:
把test_api.html交给flask返回,实现通过访问 "/"返回 test_api.html,并实现接口测试
这里的问题是我本地环境的问题,用的py312,但默认的python环境是3.8。如果执行类似的操作,还是要在一个纯净的环境中比较好。
最终还是改好了。
最终的运行结果
到此已经完成,我想我应该教小学生开发一个具有人工智能的网站了,因为非常的人性啊!!
看到这个页面,我佩服了,这页面比我写的好!!!
目录结构以及完整代码
目录结构如下
代码如下
1.运行bayes_example.py
# 导入依赖
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
import joblib# 数据集加载
iris = datasets.load_iris()
X = iris.data # 特征
y = iris.target # 标签# 数据集拆分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y
)# 数据集探索
print("数据集基本信息:")
pd.DataFrame(X, columns=iris.feature_names).info()print("数据集行数和列数:", X.shape)
print("类别分布:", np.bincount(y))# 数据集处理
# 标准化处理
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)# 归一化处理
minmax_scaler = MinMaxScaler()
X_train_normalized = minmax_scaler.fit_transform(X_train)
X_test_normalized = minmax_scaler.transform(X_test)# 实例化三种贝叶斯算法
gnb = GaussianNB()
mnb = MultinomialNB()
bnb = BernoulliNB()# 模型训练
gnb.fit(X_train_scaled, y_train)
mnb.fit(X_train_normalized, y_train)
bnb.fit(X_train_normalized, y_train)# 模型验证
gnb_scores = cross_val_score(gnb, X_train_scaled, y_train, cv=5)
mnb_scores = cross_val_score(mnb, X_train_normalized, y_train, cv=5)
bnb_scores = cross_val_score(bnb, X_train_normalized, y_train, cv=5)print("高斯贝叶斯交叉验证得分:", gnb_scores)
print("多项式贝叶斯交叉验证得分:", mnb_scores)
print("伯努利贝叶斯交叉验证得分:", bnb_scores)# 模型评估
gnb_pred = gnb.predict(X_test_scaled)
mnb_pred = mnb.predict(X_test_normalized)
bnb_pred = bnb.predict(X_test_normalized)print("高斯贝叶斯准确率:", accuracy_score(y_test, gnb_pred))
print("多项式贝叶斯准确率:", accuracy_score(y_test, mnb_pred))
print("伯努利贝叶斯准确率:", accuracy_score(y_test, bnb_pred))print("高斯贝叶斯分类报告:\n", classification_report(y_test, gnb_pred, zero_division=1))
print("多项式贝叶斯分类报告:\n", classification_report(y_test, mnb_pred, zero_division=1))
print("伯努利贝叶斯分类报告:\n", classification_report(y_test, bnb_pred, zero_division=1))print("高斯贝叶斯混淆矩阵:\n", confusion_matrix(y_test, gnb_pred))
print("多项式贝叶斯混淆矩阵:\n", confusion_matrix(y_test, mnb_pred))
print("伯努利贝叶斯混淆矩阵:\n", confusion_matrix(y_test, bnb_pred))# 模型预测
new_sample = np.array([[5.1, 3.5, 1.4, 0.2]])
new_sample_scaled = scaler.transform(new_sample)
new_sample_normalized = minmax_scaler.transform(new_sample)print("高斯贝叶斯预测结果:", gnb.predict(new_sample_scaled))
print("多项式贝叶斯预测结果:", mnb.predict(new_sample_normalized))
print("伯努利贝叶斯预测结果:", bnb.predict(new_sample_normalized))# 模型保存
joblib.dump(gnb, 'gnb_model.pkl')
joblib.dump(mnb, 'mnb_model.pkl')
joblib.dump(bnb, 'bnb_model.pkl')
joblib.dump(scaler, 'scaler.pkl')
joblib.dump(minmax_scaler, 'minmax_scaler.pkl')# 模型加载
gnb_loaded = joblib.load('gnb_model.pkl')
mnb_loaded = joblib.load('mnb_model.pkl')
bnb_loaded = joblib.load('bnb_model.pkl')print("加载的高斯贝叶斯模型预测结果:", gnb_loaded.predict(new_sample_scaled))
print("加载的多项式贝叶斯模型预测结果:", mnb_loaded.predict(new_sample_normalized))
print("加载的伯努利贝叶斯模型预测结果:", bnb_loaded.predict(new_sample_normalized))
运行flask_api.py
python flask_api.py
# 导入依赖
import numpy as np
from flask import Flask, request, jsonify
import joblib
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from flask import send_fileapp = Flask(__name__)# 加载模型和数据处理器
try:gnb = joblib.load('gnb_model.pkl')mnb = joblib.load('mnb_model.pkl')bnb = joblib.load('bnb_model.pkl')scaler = joblib.load('scaler.pkl')minmax_scaler = joblib.load('minmax_scaler.pkl')
except Exception as e:pass@app.route('/predict', methods=['POST'])
def predict():data = request.get_json(force=True)sample = np.array([data['features']])# 数据处理sample_scaled = scaler.transform(sample)sample_normalized = minmax_scaler.transform(sample)# 模型预测gnb_pred = gnb.predict(sample_scaled)[0]mnb_pred = mnb.predict(sample_normalized)[0]bnb_pred = bnb.predict(sample_normalized)[0]return jsonify({'gaussian_nb': int(gnb_pred),'multinomial_nb': int(mnb_pred),'bernoulli_nb': int(bnb_pred)})@app.route('/')
def index():return send_file('test_api.html')if __name__ == '__main__':app.run(debug=True)
执行test_api.bat
@echo off
curl -X POST http://127.0.0.1:5000/predict -H "Content-Type: application/json" -d "{\"features\": [5.1, 3.5, 1.4, 0.2]}"
pause
前端页面test_api.html
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Flask API 测试</title><style>body {font-family: Arial, sans-serif;max-width: 600px;margin: 20px auto;padding: 20px;}.input-group {margin-bottom: 15px;}label {display: block;margin-bottom: 5px;}input {width: 100%;padding: 8px;box-sizing: border-box;}button {background-color: #4CAF50;color: white;padding: 10px 15px;border: none;border-radius: 4px;cursor: pointer;}button:hover {background-color: #45a049;}#result {margin-top: 20px;padding: 15px;border: 1px solid #ddd;background-color: #f9f9f9;}</style>
</head>
<body><h1>Flask API 预测测试</h1><div class="input-group"><label for="feature1">特征 1:</label><input type="number" id="feature1" step="0.01" value="5.1"></div><div class="input-group"><label for="feature2">特征 2:</label><input type="number" id="feature2" step="0.01" value="3.5"></div><div class="input-group"><label for="feature3">特征 3:</label><input type="number" id="feature3" step="0.01" value="1.4"></div><div class="input-group"><label for="feature4">特征 4:</label><input type="number" id="feature4" step="0.01" value="0.2"></div><button onclick="submitPrediction()">提交预测</button><div id="result"></div><script>async function submitPrediction() {const features = [parseFloat(document.getElementById('feature1').value),parseFloat(document.getElementById('feature2').value),parseFloat(document.getElementById('feature3').value),parseFloat(document.getElementById('feature4').value)];try {const response = await fetch('http://127.0.0.1:5000/predict', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({ features })});if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const data = await response.json();const resultDiv = document.getElementById('result');resultDiv.innerHTML = `<h2>预测结果</h2><p>高斯朴素贝叶斯: ${data.gaussian_nb}</p><p>多项式朴素贝叶斯: ${data.multinomial_nb}</p><p>伯努利朴素贝叶斯: ${data.bernoulli_nb}</p>`;} catch (error) {const resultDiv = document.getElementById('result');resultDiv.innerHTML = `<p style="color: red;">错误: ${error.message}</p>`;}}</script>
</body>
</html>