使用shell脚本运行python脚本时如何解决此错误
我正在尝试运行一个ML算法-KNN回归函数。 我已经在jupyter笔记本和vs代码上成功运行了这段代码 然后我使用一个shell脚本来运行python脚本。但是,生成了下面的错误代码。我不确定是什么问题 我正在安装了依赖项的virtual env上运行。还可以使用shell脚本读取requirements.txt文件生成requirements.txt 有人能帮我吗使用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
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'