当前位置: 首页 > news >正文

1.5.2

继续完成机器学习实验报告

1. 使用pandas从本地读取iris数据集

def read_with_pandas():
# 如果文件不存在则下载
if not os.path.exists('iris.csv'):
print("正在下载iris数据集...")
try:
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
response = requests.get(url)
with open('iris.csv', 'wb') as f:
f.write(response.content)
print("数据集下载完成!")
except:
print("下载失败,将直接使用sklearn数据集")
return None

# 读取数据
columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']
df = pd.read_csv('iris.csv', header=None, names=columns)print("\n【Pandas加载结果】")
print(f"数据集形状: {df.shape}")
print("前5行数据:")
print(df.head())
return df

2. 从scikit-learn直接加载iris数据集

def load_from_sklearn():
iris = load_iris()
X, y = iris.data, iris.target

print("\n【Sklearn加载结果】")
print(f"数据集形状: {X.shape}")
print(f"特征名称: {iris.feature_names}")
print(f"类别名称: {iris.target_names}")
return X, y, iris.target_names

3-4. 五折交叉验证和模型评估

def cross_validation_and_evaluation(X, y, target_names):
# 创建分类器
rf = RandomForestClassifier(n_estimators=100, random_state=42)

# 五折交叉验证
kf = KFold(n_splits=5, shuffle=True, random_state=42)# 存储评估指标
accuracies = []
precisions = []
recalls = []
f1_scores = []print("\n【五折交叉验证结果】")
for i, (train_idx, test_idx) in enumerate(kf.split(X)):X_train, X_test = X[train_idx], X[test_idx]y_train, y_test = y[train_idx], y[test_idx]# 训练模型rf.fit(X_train, y_train)# 预测y_pred = rf.predict(X_test)# 计算指标acc = accuracy_score(y_test, y_pred)precision = precision_score(y_test, y_pred, average='macro')recall = recall_score(y_test, y_pred, average='macro')f1 = f1_score(y_test, y_pred, average='macro')# 存储结果accuracies.append(acc)precisions.append(precision)recalls.append(recall)f1_scores.append(f1)print(f"\n折 {i+1}:")print(f"  准确度: {acc:.4f}")print(f"  精度: {precision:.4f}")print(f"  召回率: {recall:.4f}")print(f"  F1值: {f1:.4f}")# 输出平均结果
print("\n【平均评估指标】")
print(f"平均准确度: {np.mean(accuracies):.4f}")
print(f"平均精度: {np.mean(precisions):.4f}")
print(f"平均召回率: {np.mean(recalls):.4f}")
print(f"平均F1值: {np.mean(f1_scores):.4f}")

主函数

def main():
print("========== Iris数据集实验 ==========")

# 步骤1: 用pandas读取
print("\n步骤1: 使用pandas读取iris数据集")
df = read_with_pandas()# 步骤2: 用sklearn读取
print("\n步骤2: 从scikit-learn加载iris数据集")
X, y, target_names = load_from_sklearn()# 步骤3-4: 交叉验证和评估
print("\n步骤3-4: 五折交叉验证和模型评估")
cross_validation_and_evaluation(X, y, target_names)print("\n========== 实验完成 ==========")

if name == "main":
main()
3. 运行结果截图(包括:准确率;精度、召回率、F1)
(1)非调库准确率:0.9600 (96.00%)

调库准确率:0.9667 ± 0.0211 (96.67%)

http://www.jsqmd.com/news/201580/

相关文章:

  • 多线程中的基础概念
  • 对比测试:KKFILE vs 传统FTP服务器效率提升300%
  • 深度学习毕设项目推荐-基于python深度学习识别水面漂浮垃圾
  • Git 远程公共分支 到 本地个人分支
  • AI如何用WebFlux重构你的Spring应用
  • 数据传输服务DTS
  • 企业级应用:Powershell 2.0在Windows服务器管理中的实战
  • 灵活用工纳税申报,亲测经验分享
  • VR技术如何解决生物教学中的敏感示范难题
  • 亲测灵活用工平台申请全流程
  • 洛雪音乐2025可用源大全官网实战搭建指南
  • 【计算机毕业设计案例】基于python深度学习识别水面漂浮垃圾
  • 深度学习毕设项目推荐-人工智能 基于卷积神经网络对不同柑橘病变识别
  • 深度学习毕设选题推荐:机器学习基于卷积神经网络对不同柑橘病变识别
  • 零基础玩转ZLIABARY镜像:5分钟创建你的第一个容器
  • VBEN框架开发新姿势:AI自动生成企业级后台代码
  • 如何激发团队的集体好奇心
  • 深度学习毕设项目推荐-基于人工智能 python_CNN卷积神经网络识别花卉是否绽放
  • 告别命令行:SourceTree可视化操作效率提升300%
  • 手机也能用!88SQUARE大图移动端适配全攻略
  • 数据结构-BST树
  • 【计算机毕业设计案例】基于python深度学习的乐器识别卷神经网络
  • NEXUS系统天地开发效率提升秘籍
  • 效率对比:GRADIO vs 传统前端开发,速度提升800%
  • 计算机深度学习毕设实战-基于机器学习卷积神经网络对不同柑橘病变识别
  • 对比传统方案:FLV.JS如何提升视频开发效率10倍
  • 从3小时到3分钟:AI如何大幅缩短Docker环境排障时间
  • CODEX入门指南:零基础学会AI编程
  • 如何用AI加速密码破解工具开发
  • 零基础学Pandas:数据分析第一课