찾다
기술 주변기기일체 포함Rust의 Linfa 및 Polars 라이브러리를 사용한 기계 학습: 선형 회귀

Rust의 Linfa 및 Polars 라이브러리를 사용한 기계 학습: 선형 회귀

이 기사에서는 Rust의 Linfa 라이브러리와 Polars 라이브러리를 사용하여 기계 학습에서 선형 회귀 알고리즘을 구현하겠습니다.

Linfa 크레이트는 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"]}

프로젝트 루트 디렉터리에 당뇨병_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> {// 将制表符定义为分隔符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(())}</float64type></ownedrepr>

  • CSV 파일을 읽으려면 polar의 CSV 리더를 사용하세요.
  • 검사를 위해 데이터프레임을 콘솔에 인쇄하세요.
  • DataFrame에서 "AGE" 열을 선형 회귀의 대상 변수로 추출합니다. 대상 열을 기계 학습의 숫자 데이터에 대한 일반적인 형식인 Float64(이중 정밀도 부동 소수점 수)로 캐스팅합니다.
  • Convert는 linfa와의 호환성을 위해 DataFrame을 narray::ArrayBase(다차원 배열)로 변환하는 기능을 제공합니다. 기계 학습을 위해 linfa 라이브러리와 호환되는 배열로 대상 시퀀스를 변환합니다.
  • 알 수 없는 데이터에 대한 모델을 평가하기 위한 기계 학습의 일반적인 관행인 80-20 비율을 사용하여 데이터 세트를 훈련 및 검증 세트로 분할합니다.
  • linfa의 선형 회귀 알고리즘을 사용하여 훈련 데이터 세트에서 선형 회귀 모델을 훈련합니다.
  • 훈련된 모델을 사용하여 검증 데이터 세트에 대해 예측합니다.
  • 검증 데이터 세트에서 R²(결정 계수) 측정값을 계산하여 모델 성능을 평가합니다. R² 값은 회귀 예측이 실제 데이터 포인트에 얼마나 근접한지를 나타냅니다.

Execute 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 라이브러리를 사용한 기계 학습: 선형 회귀의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 51CTO.COM에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
신속한 엔지니어링에서 생각의 그래프는 무엇입니까?신속한 엔지니어링에서 생각의 그래프는 무엇입니까?Apr 13, 2025 am 11:53 AM

소개 신속한 엔지니어링에서 "Thought of Thought"는 그래프 이론을 사용하여 AI의 추론 과정을 구성하고 안내하는 새로운 접근법을 나타냅니다. 종종 선형 S와 관련된 전통적인 방법과 달리

Genai 에이전트와 함께 조직의 이메일 마케팅을 최적화하십시오Genai 에이전트와 함께 조직의 이메일 마케팅을 최적화하십시오Apr 13, 2025 am 11:44 AM

소개 축하해요! 당신은 성공적인 사업을 운영합니다. 웹 페이지, 소셜 미디어 캠페인, 웹 세미나, 컨퍼런스, 무료 리소스 및 기타 소스를 통해 매일 5000 개의 이메일 ID를 수집합니다. 다음 명백한 단계는입니다

Apache Pinot을 사용한 실시간 앱 성능 모니터링Apache Pinot을 사용한 실시간 앱 성능 모니터링Apr 13, 2025 am 11:40 AM

소개 오늘날의 빠르게 진행되는 소프트웨어 개발 환경에서 최적의 애플리케이션 성능이 중요합니다. 응답 시간, 오류율 및 자원 활용과 같은 실시간 메트릭 모니터링 메인이 도움이 될 수 있습니다.

Chatgpt가 10 억 명의 사용자를 쳤습니까? Openai CEO는'몇 주 만에 두 배가되었습니다Chatgpt가 10 억 명의 사용자를 쳤습니까? Openai CEO는'몇 주 만에 두 배가되었습니다Apr 13, 2025 am 11:23 AM

"얼마나 많은 사용자가 있습니까?" 그는 자극했다. Altman은“마지막으로 우리가 마지막으로 말한 것은 매주 5 억 명의 행위자이며 매우 빠르게 성장하고 있다고 생각합니다. 앤더슨은 계속해서“당신은 나에게 몇 주 만에 두 배가되었다고 말했습니다. “저는 그 개인이라고 말했습니다

Pixtral -12B : Mistral AI의 첫 번째 멀티 모드 모델 -Anuctics VidhyaPixtral -12B : Mistral AI의 첫 번째 멀티 모드 모델 -Anuctics VidhyaApr 13, 2025 am 11:20 AM

소개 Mistral은 최초의 멀티 모드 모델, 즉 Pixtral-12B-2409를 발표했습니다. 이 모델은 Mistral의 120 억 개의 매개 변수 인 NEMO 12B를 기반으로합니다. 이 모델을 차별화하는 것은 무엇입니까? 이제 이미지와 Tex를 모두 가져갈 수 있습니다

생성 AI 응용 프로그램을위한 에이전트 프레임 워크 - 분석 Vidhya생성 AI 응용 프로그램을위한 에이전트 프레임 워크 - 분석 VidhyaApr 13, 2025 am 11:13 AM

쿼리에 응답 할뿐만 아니라 자율적으로 정보를 모으고, 작업을 실행하며, 여러 유형의 데이터 (텍스트, 이미지 및 코드를 처리하는 AI 구동 조수가 있다고 상상해보십시오. 미래처럼 들리나요? 이것에서

금융 부문에서 생성 AI의 응용금융 부문에서 생성 AI의 응용Apr 13, 2025 am 11:12 AM

소개 금융 산업은 효율적인 거래 및 신용 가용성을 촉진함으로써 경제 성장을 주도하기 때문에 모든 국가 개발의 초석입니다. 거래가 발생하는 용이성 및 신용

온라인 학습 및 수동 공격 알고리즘 안내온라인 학습 및 수동 공격 알고리즘 안내Apr 13, 2025 am 11:09 AM

소개 소셜 미디어, 금융 거래 및 전자 상거래 플랫폼과 같은 소스에서 전례없는 속도로 데이터가 생성되고 있습니다. 이 지속적인 정보 스트림을 처리하는 것은 어려운 일이지만

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경