我使用的是配备 Apple M1 芯片、运行 macOS 11.6 Big Sur 的 MacBook Air。我正在使用 R 4.1.1。我安装了适用于 Apple M1 的 Xtools 和 gfortran:
\nmarkwhite@marks-air ~ % which xcode-select\n/usr/bin/xcode-select\nmarkwhite@marks-air ~ % which gfortran\n/usr/local/bin/gfortran\nRun Code Online (Sandbox Code Playgroud)\n我能够成功安装并运行 R\xe2\x80\x94,但是安装一些软件包给我带来了麻烦:
\n> install.packages("mvtnorm")\n\n There is a binary version available but the source version is later:\n binary source needs_compilation\nmvtnorm 1.1-2 1.1-3 TRUE\n\nDo you want to install from sources the package which needs compilation? (Yes/no/cancel) Yes\ninstalling the source package \xe2\x80\x98mvtnorm\xe2\x80\x99\n\ntrying URL \'https://cran.rstudio.com/src/contrib/mvtnorm_1.1-3.tar.gz\'\nContent type \'application/x-gzip\' length 166421 bytes (162 …Run Code Online (Sandbox Code Playgroud) 我目前正在为R包编写函数。此功能旨在实现的部分目的是(a)将数据作为输入,并且(b)根据可接受值的列表检查其某一列。
这些可接受的价值是从另一个组织给我的。它们位于.csv文件中。我想做的是加载此.csv文件,并将其用作检查来自用户的列是否具有有效值的参考。
例如,假设用户具有以下数据:
set.seed(1839)
user <- data.frame(x=sample(letters,10),
y=rnorm(10))
user
x y
1 v -0.7025836
2 p -1.4586245
3 f 0.1987113
4 y 1.0544690
5 o -0.7112214
6 m 0.2956671
7 b 0.3016737
8 a -0.0945271
9 x -0.2790357
10 c 0.1681388
Run Code Online (Sandbox Code Playgroud)
.csv包含许多(有用的)列,但目前我只关心一个(z):
ref <- data.frame(z=letters[1:4], a=rnorm(4), b=(rnorm(4)))
ref
z a b
1 a -0.3563105 1.4536406
2 b 1.6841862 1.3232985
3 c 1.3073516 -0.6978598
4 d 0.4352904 -0.3971175
Run Code Online (Sandbox Code Playgroud)
我想运行的代码是(注意:我没有library在实际函数中调用,为简单起见,我只是在这里做):
library(dplyr)
valid_values <- ref %>%
select(z) %>%
unname() …Run Code Online (Sandbox Code Playgroud) 我曾经quanteda::textmodel_NB创建一个模型,将文本分为两类之一。我将模型拟合到去年夏天的训练数据集上。
现在,我试图在今年夏天使用它来对我们在工作中获得的新文本进行分类。我尝试这样做并收到以下错误:
Error in predict.textmodel_NB_fitted(model, test_dfm) :
feature set in newdata different from that in training set
Run Code Online (Sandbox Code Playgroud)
可以在此处的第 157 至 165 行找到生成错误的函数中的代码。
我认为这是因为训练数据集中的单词与测试数据集中使用的单词不完全匹配。但是为什么会出现这个错误呢?我觉得好像——在现实世界的例子中有用——模型应该能够处理包含不同特征的数据集,因为这在应用中很可能总是发生。
所以我的第一个问题是:
1. 这个错误是朴素贝叶斯算法的一个属性吗?还是函数的作者选择这样做?
这让我想到了我的第二个问题:
2. 我该如何解决这个问题?
为了解决第二个问题,我提供了可重现的代码(最后一行生成了上面的错误):
library(quanteda)
library(magrittr)
library(data.table)
train_text <- c("Can random effects apply only to categorical variables?",
"ANOVA expectation identity",
"Statistical test for significance in ranking positions",
"Is Fisher Sharp Null Hypothesis testable?",
"List major reasons for different results from survival analysis among different studies",
"How do the …Run Code Online (Sandbox Code Playgroud) 我正在进行Kaggle竞赛(数据在这里),但是在使用scikit-learn的GradientBoostingRegressor时遇到了麻烦。竞争是使用均方根均方根误差(RMLSE)来评估预测。
为了进行MWE,以下是我train.csv在上面的链接中用于清理的代码:
import datetime
import pandas as pd
train = pd.read_csv("train.csv", index_col=0)
train.pickup_datetime = pd.to_datetime(train.pickup_datetime)
train["pickup_month"] = train.pickup_datetime.apply(lambda x: x.month)
train["pickup_day"] = train.pickup_datetime.apply(lambda x: x.day)
train["pickup_hour"] = train.pickup_datetime.apply(lambda x: x.hour)
train["pickup_minute"] = train.pickup_datetime.apply(lambda x: x.minute)
train["pickup_weekday"] = train.pickup_datetime.apply(lambda x: x.weekday())
train = train.drop(["pickup_datetime", "dropoff_datetime"], axis=1)
train["store_and_fwd_flag"] = pd.get_dummies(train.store_and_fwd_flag, drop_first=True)
X_train = train.drop("trip_duration", axis=1)
y_train = train.trip_duration
Run Code Online (Sandbox Code Playgroud)
为了说明一些作品,如果我使用一个随机森林,那么RMSLE计算就好了:
import numpy as np
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.metrics import make_scorer
from sklearn.model_selection import cross_val_score …Run Code Online (Sandbox Code Playgroud) r ×3
apple-m1 ×1
devtools ×1
gfortran ×1
macos ×1
naivebayes ×1
python ×1
quanteda ×1
roxygen2 ×1
scikit-learn ×1