项目简介
MinLinMo是一款跨平台的线性模型变量选择和预测工具,支持Windows、OS X和Linux系统。该工具侧重于构建简洁的预测模型,而非单纯追求最高的准确性。用户可设置最小方差解释改进百分比,以此决定最终预测模型中应包含的变量,在准确性损失可忽略的前提下,给予用户更多对预测变量的控制权。
项目的主要特性和功能
- 跨平台支持:兼容Windows、OS X和Linux系统。
- 高效性能:针对Intel和ARM处理器优化,采用多线程和SIMD指令集(如AVX2和NEON)提升性能。
- 用户控制:允许用户设置最小方差解释改进百分比,自主决定最终预测模型的变量。
- 命令行接口:提供丰富命令行参数,便于用户进行模型训练和预测。
- 数据准备:支持CSV格式的输入数据,用户可使用Python或R快速生成测试数据集。
安装使用步骤
1. 编译和安装
MinLinMo使用C++14编写,需要GNU Scientific Library (GSL)支持。不同平台编译步骤如下:
Linux (Intel CPU with AVX2)
bash
sudo apt install libgsl-dev
g++ MinLinMo.cpp -march=core-avx2 -lgsl -lblas -lpthread -O3 -o MinLinMo -std=c++14
Linux (ARM)
bash
sudo apt install libgsl-dev
g++ MinLinMo.cpp -lpthread -std=c++14 -O3 -lgsl -lblas -lpthread -march=armv8-a -o MinLinMo
OS X (Apple Silicon)
bash
brew install gsl
g++ MinLinMo.cpp -lpthread -std=c++14 -O3 -lgsl -lblas -I /opt/homebrew/Cellar/gsl/2.7.1/include/ -L /opt/homebrew/Cellar/gsl/2.7.1/lib/ -march=armv8-a -o MinLinMo
OS X (Intel)
bash
brew install gsl
g++ MinLinMo.cpp -lpthread -std=c++14 -O3 -lgsl -lblas -I /opt/homebrew/Cellar/gsl/2.7.1/include/ -L /opt/homebrew/Cellar/gsl/2.7.1/lib/ -march=core-avx2 -o MinLinMo
Windows
下载预编译的.exe
和.dll
文件,确保它们在同一目录下。若需从源码编译,建议使用Visual Studio 2017或更高版本,并通过Nuget安装GSL库。
2. 测试MinLinMo
使用mtcars
数据集进行测试:
bash
./MinLinMo -y mpg.txt -X mtcars.csv
3. 准备数据集
使用Python或R生成测试数据集:
Python
```python import numpy as np import pandas as pd numcols = 50000 numrows = 1000 matrix = np.random.normal(0, 1, (numrows, numcols)) headers = ["V" + str(i) for i in range(0, numcols)] df = pd.DataFrame(matrix, columns=headers) df.to_csv("random_matrix.csv", index=False)
vector = np.random.normal(0,1,numrows) header = ["Outcome"] outc = pd.DataFrame(vector, columns=header) outc.to_csv("Outcome.csv", index=False) ```
R
```r library(data.table) numcols <- 50000 numrows <- 1000 matr <- matrix(rnorm(numcols * numrows), ncol=numcols, nrow=numrows) headers <- paste("pred",1:numcols, sep="") colnames(matr) <- headers fwrite(matr, file="random_matrix.csv", quote=F)
vect <- rnorm(numrows) outc <- as.data.frame(vect) names(outc) <- "Outcome" fwrite(outc, file="Outcome.csv", quote=F) ```
4. 使用MinLinMo训练模型并进行预测
训练模型并输出预测结果:
bash
./MinLinMo -X random_matrix.csv -O ests.txt -y Outcome.csv
在R中加载预测结果并进行预测:
r
ests <- read.table("ests.txt", header=T, sep=" ")
ests$id <- as.character(ests$id)
pred <- cbind(1, as.matrix(mldat[,ests$id[-1]])) %*% ests$est
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】