400 128 6709

行业新闻

使用Rust的Linfa和Polars库进行机器学习:线性回归

发布时间:2024-03-01点击次数:

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

使用rust的linfa和polars库进行机器学习:线性回归

Machine Translation Machine Translation

聚合多个来源的AI翻译

Machine Translation 49 查看详情 Machine Translation

在这篇文章中,我们将使用Rust的Linfa库和Polars库来实现机器学习中的线性回归算法。

Linfa crate旨在提供一个全面的工具包来使用Rust构建机器学习应用程序。

Polars是一个基于Apache Arrow内存模型的Rust DataFrame库。Apache Arrow提供了高效的列数据结构,并逐渐成为事实上的标准。

在下面的例子中,我们使用一个糖尿病数据集来训练线性回归算法。

使用以下命令创建一个Rust新项目:

cargo new machine_learning_linfa

在Cargo.toml文件中加入以下依赖项:

[dependencies]linfa = "0.7.0"linfa-linear = "0.7.0"ndarray = "0.15.6"polars = { version = "0.35.4", features = ["ndarray"]}

在项目根目录下创建一个diabetes_file.csv文件,将数据集写入文件。

AGESEX BMI BPS1S2S3S4S5S6Y592 32.1101 157 93.2384 4.859887151481 21.687183 103.2 703 3.89186975722 30.593156 93.6414 4.672885141241 25.384198 131.4 405 4.890389206501 23101 192 125.4 524 4.290580135231 22.689139 64.8612 4.18976897362 2290160 99.6503 3.951282138662 26.2114 255 185 564.554.24859263602 32.183179 119.4 424 4.477394110.............

数据集从这里下载:https://www4.stat.ncsu.edu/~boos/var.select/diabetes.tab.txt

在src/main.rs文件中写入以下代码:

use linfa::prelude::*;use linfa::traits::Fit;use linfa_linear::LinearRegression;use ndarray::{ArrayBase, OwnedRepr};use polars::prelude::*; // Import polarsfn main() -> Result<(), Box<dyn std::error::Error>> {// 将制表符定义为分隔符let separator = b'\t';let df = polars::prelude::CsvReader::from_path("./diabetes_file.csv")?.infer_schema(None).with_separator(separator).has_header(true).finish()?;println!("{:?}", df);// 提取并转换目标列let age_series = df.column("AGE")?.cast(&DataType::Float64)?;let target = age_series.f64()?;println!("Creating features dataset");let mut features = df.drop("AGE")?;// 遍历列并将每个列强制转换为Float64for col_name in features.get_column_names_owned() {let casted_col = df.column(&col_name)?.cast(&DataType::Float64).expect("Failed to cast column");features.with_column(casted_col)?;}println!("{:?}", df);let features_ndarray: ArrayBase<OwnedRepr<_>, _> =features.to_ndarray::<Float64Type>(IndexOrder::C)?;let target_ndarray = target.to_ndarray()?.to_owned();let (dataset_training, dataset_validation) =Dataset::new(features_ndarray, target_ndarray).split_with_ratio(0.80);// 训练模型let model = LinearRegression::default().fit(&dataset_training)?;// 预测let pred = model.predict(&dataset_validation);// 评价模型let r2 = pred.r2(&dataset_validation)?;println!("r2 from prediction: {}", r2);Ok(())}

  • 使用polar的CSV reader读取CSV文件。
  • 将数据帧打印到控制台以供检查。
  • 从DataFrame中提取“AGE”列作为线性回归的目标变量。将目标列强制转换为Float64(双精度浮点数),这是机器学习中数值数据的常用格式。
  • 将features DataFrame转换为narray::ArrayBase(一个多维数组)以与linfa兼容。将目标序列转换为数组,这些数组与用于机器学习的linfa库兼容。
  • 使用80-20的比例将数据集分割为训练集和验证集,这是机器学习中评估模型在未知数据上的常见做法。
  • 使用linfa的线性回归算法在训练数据集上训练线性回归模型。
  • 使用训练好的模型对验证数据集进行预测。
  • 计算验证数据集上的R²(决定系数)度量,以评估模型的性能。R²值表示回归预测与实际数据点的近似程度。

执行cargo run,运行结果如下:

shape: (442, 11)┌─────┬─────┬──────┬───────┬───┬──────┬────────┬─────┬─────┐│ AGE ┆ SEX ┆ BMI┆ BP┆ … ┆ S4 ┆ S5 ┆ S6┆ Y ││ --- ┆ --- ┆ ---┆ --- ┆ ┆ ---┆ ---┆ --- ┆ --- ││ i64 ┆ i64 ┆ f64┆ f64 ┆ ┆ f64┆ f64┆ i64 ┆ i64 │╞═════╪═════╪══════╪═══════╪═══╪══════╪════════╪═════╪═════╡│ 59┆ 2 ┆ 32.1 ┆ 101.0 ┆ … ┆ 4.0┆ 4.8598 ┆ 87┆ 151 ││ 48┆ 1 ┆ 21.6 ┆ 87.0┆ … ┆ 3.0┆ 3.8918 ┆ 69┆ 75││ 72┆ 2 ┆ 30.5 ┆ 93.0┆ … ┆ 4.0┆ 4.6728 ┆ 85┆ 141 ││ 24┆ 1 ┆ 25.3 ┆ 84.0┆ … ┆ 5.0┆ 4.8903 ┆ 89┆ 206 ││ … ┆ … ┆ …┆ … ┆ … ┆ …┆ …┆ … ┆ … ││ 47┆ 2 ┆ 24.9 ┆ 75.0┆ … ┆ 5.0┆ 4.4427 ┆ 102 ┆ 104 ││ 60┆ 2 ┆ 24.9 ┆ 99.67 ┆ … ┆ 3.77 ┆ 4.1271 ┆ 95┆ 132 ││ 36┆ 1 ┆ 30.0 ┆ 95.0┆ … ┆ 4.79 ┆ 5.1299 ┆ 85┆ 220 ││ 36┆ 1 ┆ 19.6 ┆ 71.0┆ … ┆ 3.0┆ 4.5951 ┆ 92┆ 57│└─────┴─────┴──────┴───────┴───┴──────┴────────┴─────┴─────┘Creating features datasetshape: (442, 11)┌─────┬─────┬──────┬───────┬───┬──────┬────────┬─────┬─────┐│ AGE ┆ SEX ┆ BMI┆ BP┆ … ┆ S4 ┆ S5 ┆ S6┆ Y ││ --- ┆ --- ┆ ---┆ --- ┆ ┆ ---┆ ---┆ --- ┆ --- ││ i64 ┆ i64 ┆ f64┆ f64 ┆ ┆ f64┆ f64┆ i64 ┆ i64 │╞═════╪═════╪══════╪═══════╪═══╪══════╪════════╪═════╪═════╡│ 59┆ 2 ┆ 32.1 ┆ 101.0 ┆ … ┆ 4.0┆ 4.8598 ┆ 87┆ 151 ││ 48┆ 1 ┆ 21.6 ┆ 87.0┆ … ┆ 3.0┆ 3.8918 ┆ 69┆ 75││ 72┆ 2 ┆ 30.5 ┆ 93.0┆ … ┆ 4.0┆ 4.6728 ┆ 85┆ 141 ││ 24┆ 1 ┆ 25.3 ┆ 84.0┆ … ┆ 5.0┆ 4.8903 ┆ 89┆ 206 ││ … ┆ … ┆ …┆ … ┆ … ┆ …┆ …┆ … ┆ … ││ 47┆ 2 ┆ 24.9 ┆ 75.0┆ … ┆ 5.0┆ 4.4427 ┆ 102 ┆ 104 ││ 60┆ 2 ┆ 24.9 ┆ 99.67 ┆ … ┆ 3.77 ┆ 4.1271 ┆ 95┆ 132 ││ 36┆ 1 ┆ 30.0 ┆ 95.0┆ … ┆ 4.79 ┆ 5.1299 ┆ 85┆ 220 ││ 36┆ 1 ┆ 19.6 ┆ 71.0┆ … ┆ 3.0┆ 4.5951 ┆ 92┆ 57│└─────┴─────┴──────┴───────┴───┴──────┴────────┴─────┴─────┘r2 from prediction: 0.15937814745521017

对于优先考虑快速迭代和快速原型的数据科学家来说,Rust的编译时间可能是令人头疼的问题。Rust的强静态类型系统虽然有利于确保类型安全和减少运行时错误,但也会在编码过程中增加一层复杂性。

以上就是使用Rust的Linfa和Polars库进行机器学习:线性回归的详细内容,更多请关注其它相关文章!


# 创建一个  # 在家兼职网站推广优化师  # 厦门产品营销推广  # 清水河软件网站优化  # 蜀山区seo排名  # 澳门长沙网站建设  # 手机社会化营销推广案例  # 宁夏网站关键词推广排名  # 写字楼网站推广方案  # 惠州网站优化服务怎么样  # 福州网站建设北路  # 如何用  # 开源  # 机器学习  # 一幅  # 微软  # 这是  # 数据结构  # 官网  # 转换为  # 多维  # type  # csv文件  # polars  # rust 


相关栏目: 【 行业新闻62819 】 【 科技资讯67470


相关推荐: 《爱康未来之夜嘉宾官宣,携手共赴AI未来》  构建AI绘画网站的方法:使用API接口和调用步骤  联想浏览器引入小乐 AI 助手,成功接入百度文心一言大模型,经过实测证实  ChatGPT只讲这25个笑话!实验上千次有90%重复,网友:幽默是人类最后的尊严  AI技术改变*,新骗局来袭,*成功率接近100%  650亿参数,8块GPU就能全参数微调:邱锡鹏团队把大模型门槛打下来了  美图秀秀发布七款 AI 工具:修图一样修视频、打造电影级上镜脸  微软 GitHub Copilot 编程助手被投诉:换口吻改写公共代码来躲版权  AMD在AI方面奋起直追,与英伟达的差距缩小了吗?  人工智能在交通领域的革新:智能解决方案彻底改变交通方式  OpenAI首席执行官引用《道德经》 呼吁就AI安全问题合作  AI在教育中的角色:AI如何改变我们的学习方式  周鸿祎参加中美青年科技创新峰会,分享人工智能创新机遇  不到2S创作AI图像!Snap发布图像生成器SnapFusion  世界人工智能大会高合发表演讲,HiPhi Y即将全球上市  “木头姐”:特斯拉的人工智能训练——“赢家通吃”的机会  喜马拉雅在国际会议挑战赛中突破语音重叠难题斩获第一 加速AI创新  赋能选题探索:AI助手在经济学专业中的应用指南  特斯拉门店可能启动机器人卖车?也许不是你想的那样  微软更新服务协议,以防止通过AI服务进行逆向工程和数据抓取  生成式AI爆发,亚马逊云科技持续专注创新,助力企业数字化转型  马克龙密会AI专家,法国加入全球人工智能竞赛  “直击”AI新世界,智能机器人再次“火出圈”了  赋能金融新生态,多家银行创新应用成果亮相世界人工智能大会  这效果能打几分?AI真人化《名侦探柯南》  AI 大模型重塑软件开发,有哪些落地前景和痛点?| ArchSummit  微软在 Build 大会上宣布的新 Microsoft Store AI Hub 现已开始推出  “五年内人类程序员将消失”预言引争议,AI真的那么强大了吗?  智能机器人正在彻底改变客户服务  “技术+实践+生态”三箭齐发,京东方抢占物联网高地  全新小艺搭载AI大模型,有效提升学生和职场人士的工作效率  Yann LeCun团队新研究成果:对自监督学习逆向工程,原来聚类是这样实现的  微软向美国政府提供GPT的大模型,安全性如何保证?  云南首例达芬奇机器人微创心脏手术成功开展  人工智能时代 数字文明对话向“尼”走来  寻求能源转型最优解  MiracleVision视觉大模型功能介绍  人工智能助力精准学习,猿辅导小猿学练机满足学生个性化学习需求  乐天派桌面机器人加入小米米家生态系统,实现与其他智能设备的互联  面向AI大模型,腾讯云首次完整披露自研星脉高性能计算网络  全球首款AI裸眼3D平板 国产的售价破万  好莱坞面临全面停摆 好莱坞大罢工抵制“AI入侵”  羚客系统即将升级,推出全新的AI数字化工具  建立元宇宙产业联盟:移动、咪咕、华为、小米等加入  应用生成式人工智能技术改善农业产业  抢占新赛道 加快机器人产业集聚发展  优化系统韧性:故障恢复与监控在RabbitMQ中的应用  笔神作文声讨学而思AI大模型 称用“爬虫”技术盗取数据  农业产业升级:AI驱动的“崃·见田”开启农田未来展望  精准度可提高 20%:英国九家银行签约使用基于 AI 的“消费者欺诈风险系统”应对* 

400 128 6709
E-mail

contact@tlftec.cn

扫一扫,添加微信

©  云南淘乐房科技有限公司 版权所有  滇ICP备2025071560号  

云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司