Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用shell脚本运行python脚本时如何解决此错误_Python_Machine Learning_Scikit Learn_Sh - Fatal编程技术网

使用shell脚本运行python脚本时如何解决此错误

使用shell脚本运行python脚本时如何解决此错误,python,machine-learning,scikit-learn,sh,Python,Machine Learning,Scikit Learn,Sh,我正在尝试运行一个ML算法-KNN回归函数。 我已经在jupyter笔记本和vs代码上成功运行了这段代码 然后我使用一个shell脚本来运行python脚本。但是,生成了下面的错误代码。我不确定是什么问题 我正在安装了依赖项的virtual env上运行。还可以使用shell脚本读取requirements.txt文件生成requirements.txt 有人能帮我吗 def knn_regressor(preprocess_lr, x_train, x_test, y_train, y_tes

我正在尝试运行一个ML算法-KNN回归函数。 我已经在jupyter笔记本和vs代码上成功运行了这段代码

然后我使用一个shell脚本来运行python脚本。但是,生成了下面的错误代码。我不确定是什么问题

我正在安装了依赖项的virtual env上运行。还可以使用shell脚本读取requirements.txt文件生成requirements.txt

有人能帮我吗

def knn_regressor(preprocess_lr, x_train, x_test, y_train, y_test):
    #combine pre-processing with ML algorithm - KNNRegression
    pipeline = make_pipeline(preprocess_lr, KNeighborsRegressor())
    params = {
        'kneighborsregressor__n_neighbors': range(2, 21),
        'kneighborsregressor__weights': ['uniform', 'distance']
        }
    model_3 = GridSearchCV(pipeline, params, cv=5, scoring='neg_mean_squared_error')
    #train the pipeline
    model_3.fit(x_train, y_train)
    #fit the model on the test data
    pred_test = model_3.predict(x_test)
    #display the results of the metrics
    rmse_model = np.sqrt(mean_squared_error(y_test, pred_test))
    r2_model = r2_score(y_test, pred_test)
    print("..........")
    print("Results on Test Data for KNN Regressor")
    print("RMSE - KNN Regressor: {:.2f}".format(rmse_model))
    print("R2 Score - KNN Regressor: {:.5f}".format(r2_model))
错误消息:

 knn_regressor(preprocess_lr, x_train, x_test, x_train, y_test)
  File "src/module1.py", line 62, in knn_regressor
    model_3.fit(x_train, y_train)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\utils\validation.py", line 72, in inner_f
    return f(**kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_search.py", line 736, in fit
    self._run_search(evaluate_candidates)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_search.py", line 1188, in _run_search
    evaluate_candidates(ParameterGrid(self.param_grid))
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_search.py", line 708, in evaluate_candidates
    out = parallel(delayed(_fit_and_score)(clone(base_estimator),
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 1029, in __call__
    if self.dispatch_one_batch(iterator):
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 847, in dispatch_one_batch
    self._dispatch(tasks)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 765, in _dispatch
    job = self._backend.apply_async(batch, callback=cb)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\_parallel_backends.py", line 208, in apply_async
    result = ImmediateResult(func)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\_parallel_backends.py", line 572, in __init__
    self.results = batch()
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 252, in __call__
    return [func(*args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 252, in <listcomp>
    return [func(*args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_validation.py", line 560, in _fit_and_score
    test_scores = _score(estimator, X_test, y_test, scorer)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_validation.py", line 607, in _score
    scores = scorer(estimator, X_test, y_test)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\metrics\_scorer.py", line 87, in __call__
    score = scorer._score(cached_call, estimator,
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\metrics\_scorer.py", line 206, in _score
    y_pred = method_caller(estimator, "predict", X)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\metrics\_scorer.py", line 53, in _cached_call
    return getattr(estimator, method)(*args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\utils\metaestimators.py", line 119, in <lambda>
    out = lambda *args, **kwargs: self.fn(obj, *args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\pipeline.py", line 408, in predict
    return self.steps[-1][-1].predict(Xt, **predict_params)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\neighbors\_regression.py", line 185, in predict
    y_pred = np.mean(_y[neigh_ind], axis=1)
  File "<__array_function__ internals>", line 5, in mean
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\core\fromnumeric.py", line 3372, in mean
    return _methods._mean(a, axis=axis, dtype=dtype,
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\core\_methods.py", line 162, in _mean
    ret = um.true_divide(
TypeError: unsupported operand type(s) for /: 'str' and 'int'
knn_回归器(预处理_lr、x_序列、x_测试、x_序列、y_测试)
knn_回归器中第62行的文件“src/module1.py”
型号3.配合(x\U系列、y\U系列)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\utils\validation.py”,第72行,在内部
返回f(**kwargs)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\model\u selection\u search.py”,第736行
自我评估。运行搜索(评估候选人)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\model\u selection\u search.py”,第1188行,在运行搜索中
评估候选参数(参数网格(self.param网格))
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\model\u selection\u search.py”,第708行,位于评估候选项中
out=并行(延迟(_-fit_和_-score)(克隆(基本估计量)),
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\joblib\parallel.py”,第1029行,在调用中__
如果self.dispatch\u一批(迭代器):
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\joblib\parallel.py”,第847行,在dispatch\u one\u批中
自我分配(任务)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\joblib\parallel.py”,第765行,在调度中
作业=self.\u后端.apply\u异步(批处理,回调=cb)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\joblib\\u parallel\u backends.py”,第208行,在apply\u async中
结果=立即结果(func)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\joblib\\u parallel\u backends.py”,第572行,在uu init中__
self.results=batch()
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\joblib\parallel.py”,第252行,在调用中__
返回[func(*args,**kwargs)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\joblib\parallel.py”,第252行,在
返回[func(*args,**kwargs)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\model\u selection\\u validation.py”,第560行,在“fit”和“score”中
测试分数=_分数(估计员、X_测试、y_测试、计分员)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\model\u selection\\ u validation.py”,第607行,在\ u score中
分数=记分员(估计员、X_检验、y_检验)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\metrics\\ u scorer.py”,第87行,在调用中__
分数=记分员。\分数(缓存的\u调用、估计器、,
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\metrics\\ u score.py”,第206行,在\ u score中
y_pred=方法(估计器,“预测”,X)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\metrics\\ u scorer.py”,第53行,在\u cached\u调用中
返回getattr(估计量,方法)(*args,**kwargs)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\utils\metaestimators.py”,第119行,在
out=lambda*args,**kwargs:self.fn(obj,*args,**kwargs)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\pipeline.py”,第408行,在predict中
返回self.steps[-1][-1].predict(Xt,**predict_参数)
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\sklearn\neights\\u regression.py”,第185行,在predict中
y_pred=np.平均值(_y[neigh_ind],轴=1)
文件“”,第5行,平均值
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\numpy\core\fromnumeric.py”,第3372行
返回方法。平均值(a,axis=axis,dtype=dtype,
文件“C:\Users\user\AppData\Local\Programs\Python38\lib\site packages\numpy\core\\u methods.py”,第162行,单位为
ret=um.true\u除法(
TypeError:/:“str”和“int”的操作数类型不受支持

看起来您可能正在使用不同版本的Python(或
requirements.txt
中列出的一些库)在脚本中运行代码,而不是使用其他方法运行代码


要修复此问题,请更新脚本,以提供用于其他环境的特定版本的python解释器的完整路径。此外,请确保在运行安装时对pip执行相同的操作。并确保
requirements.txt
中列出的所有库的版本与t中使用的版本相同他在其他环境中工作。

对不起,我还是python的初学者。你能指导我解决这个问题的步骤吗?我也不确定我是否正确创建了requirements.txt。我已经在vs代码上编写了脚本,并使用conda创建了虚拟环境。
shell script:

#!/usr/bin/env bash

pip install -r requirements.txt

echo "Please select your algorithm: "
echo "1 - KNN Regressor"

python src/module1.py $user_algo
 knn_regressor(preprocess_lr, x_train, x_test, x_train, y_test)
  File "src/module1.py", line 62, in knn_regressor
    model_3.fit(x_train, y_train)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\utils\validation.py", line 72, in inner_f
    return f(**kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_search.py", line 736, in fit
    self._run_search(evaluate_candidates)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_search.py", line 1188, in _run_search
    evaluate_candidates(ParameterGrid(self.param_grid))
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_search.py", line 708, in evaluate_candidates
    out = parallel(delayed(_fit_and_score)(clone(base_estimator),
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 1029, in __call__
    if self.dispatch_one_batch(iterator):
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 847, in dispatch_one_batch
    self._dispatch(tasks)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 765, in _dispatch
    job = self._backend.apply_async(batch, callback=cb)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\_parallel_backends.py", line 208, in apply_async
    result = ImmediateResult(func)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\_parallel_backends.py", line 572, in __init__
    self.results = batch()
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 252, in __call__
    return [func(*args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\joblib\parallel.py", line 252, in <listcomp>
    return [func(*args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_validation.py", line 560, in _fit_and_score
    test_scores = _score(estimator, X_test, y_test, scorer)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\model_selection\_validation.py", line 607, in _score
    scores = scorer(estimator, X_test, y_test)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\metrics\_scorer.py", line 87, in __call__
    score = scorer._score(cached_call, estimator,
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\metrics\_scorer.py", line 206, in _score
    y_pred = method_caller(estimator, "predict", X)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\metrics\_scorer.py", line 53, in _cached_call
    return getattr(estimator, method)(*args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\utils\metaestimators.py", line 119, in <lambda>
    out = lambda *args, **kwargs: self.fn(obj, *args, **kwargs)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\pipeline.py", line 408, in predict
    return self.steps[-1][-1].predict(Xt, **predict_params)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\sklearn\neighbors\_regression.py", line 185, in predict
    y_pred = np.mean(_y[neigh_ind], axis=1)
  File "<__array_function__ internals>", line 5, in mean
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\core\fromnumeric.py", line 3372, in mean
    return _methods._mean(a, axis=axis, dtype=dtype,
  File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\numpy\core\_methods.py", line 162, in _mean
    ret = um.true_divide(
TypeError: unsupported operand type(s) for /: 'str' and 'int'