小编Szy*_*orz的帖子

ifstream.good() 和 bool(ifstream) 的区别

我正在编写一个程序,它从一个文本文件中获取几个变量。当程序找到 EOF 时,
它结束输入数据。

int main()
{
    int val, count = 0;
    ifstream fileIn;
    fileIn.open("num.txt");

    fileIn >> val;
    while (fileIn)
    {
        ++count;
        cout << "number: " << val << endl;
        fileIn >> val;
    }
    cout << "count: " << count << endl;

    fileIn.close();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

num.txt 文件: 11 22 33 44

程序输出:

number: 11
number: 22
number: 33
number: 44
count: 4
Run Code Online (Sandbox Code Playgroud)

一切都好。但是,如果我将 while 条件部分从fileInto更改为fileIn.good()
则程序输出将如下所示:

number: 11
number: 22
number: 33
count: 3
Run Code Online (Sandbox Code Playgroud)

它现在跳过最后一个值。为什么会出现这种情况,什么是之间的区别 …

c++ file-io ifstream

9
推荐指数
2
解决办法
1万
查看次数

LinearRegression 预测因输入类型而异

我正在研究一个通过属性预测汽车价格的模型。我注意到LinearRegression模型的预测因输入类型 ( numpy.ndarray, scipy.sparse.csr.csr_matrix)而异。

我的数据由一些数字和分类属性组成,没有 NaN。

这是一个简单的数据准备代码(对于我后面描述的每种情况都很常见):

from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.linear_model import LinearRegression

# Splitting to test and train
X = data_orig.drop("price", axis=1)
y = data_orig[["price"]]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Numerical attributes pipeline
num_pipeline = Pipeline([ ("scaler", StandardScaler()) ])

# Categorical attributes pipeline
cat_pipeline = Pipeline([ ("encoder", OneHotEncoder(handle_unknown="ignore")) ])

# Complete pipeline
full_pipeline = ColumnTransformer([
    ("cat", cat_pipeline, ["model", "transmission", "fuelType"]),
    ("num", num_pipeline, ["year", "mileage", …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning linear-regression scikit-learn

3
推荐指数
1
解决办法
157
查看次数