I have installed scikit-learn 0.23.2 via pip3, however, I get this error from my code
Traceback (most recent call last):
File "pca_iris.py", line 12, in <module>
X = StandardScaler().fit_transform(X)
NameError: name 'StandardScaler' is not defined
I searched the web and saw similar topics, however the version is correct and I don't know what to do further. The line import sklearn is in the top of the script.
Any thought?
StandardScaler is a method under sklearn.preprocessing. You need to import the StandardScaler like this:
from sklearn.preprocessing import StandardScaler
X = StandardScaler().fit_transform(X)
Or
import sklearn
X = sklearn.preprocessing.StandardScaler().fit_transform(X)
Related
Hello there,
I am new to python and I was trying out a project on jupyter notebook when I encountered an error which I couldn't resolve. I'd really appreciate some help.
This is my code:
import pandas as pd
from sklearn.tree import DesicionTreeClassifier
music_data = pd.read_csv(r'C:\python\python382\music.csv')
X=music_data.drop(columns=['genre'])
y=music_data['genre']
model=DesicionTreeClassifier()
model.fit(X,y)
music_data
And i got the output as :
ImportError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_2540/2462038274.py in <module>
1 import pandas as pd
----> 2 from sklearn.tree import DesicionTreeClassifier #using desicion tree algo here to make model[we import DesicionTree module from tree module which is imported from sklearn library]
3 music_data = pd.read_csv(r'C:\python\python382\music.csv')
4
5 ##Cleaning and segregating data
ImportError: cannot import name 'DesicionTreeClassifier' from 'sklearn.tree' (C:\python\python382\lib\site-packages\sklearn\tree\__init__.py)
Thank you.
You have missspelled the fumction name DesicionTreeClassifier is in reality DecisionTreeClassifier
I'm trying to learn how to create a machine learning API with Flask, however, following this tutorial, the following error appears when I type the command python app.py:
Traceback (most recent call last):
File "C:\Users\Breno\Desktop\flask-api\app.py", line 24, in <module>
model = p.load(open(modelfile, 'rb'))
ModuleNotFoundError: No module named 'sklearn.tree.tree'
My code:
from flask import Flask, request, redirect, url_for, flash, jsonify
import numpy as np
import pickle as p
import pandas as pd
import json
#from sklearn.tree import DecisionTreeClassifier
app = Flask(__name__)
#app.route('/api/', methods=['POST'])
def makecalc():
j_data = request.get_json()
prediction = np.array2string(model.predict(j_data))
return jsonify(prediction)
if __name__ == '__main__':
modelfile = 'models/final_prediction.pickle'
model = p.load(open(modelfile, 'rb'))
app.run(debug=True,host='0.0.0.0')
Could someone help me please?
Pickles are not necessarily compatible across scikit-learn versions so this behavior is expected (and the use case is not supported). For more details, see https://scikit-learn.org/dev/modules/model_persistence.html#model-persistence. Replace pickle by joblib.
by example :
>>> from sklearn import svm
>>> from sklearn import datasets
>>> clf = svm.SVC()
>>> X, y= datasets.load_iris(return_X_y=True)
>>> clf.fit(X, y)
SVC()
>>> from joblib import dump, load
>>> dump(clf, open('filename.joblib','wb'))
>>> clf2 = load(open('filename.joblib','rb'))
>>> clf2.predict(X[0:1])
array([0])
>>> y[0]
0
For anyone coming across this issue (perhaps dealing with code written long ago), sklearn.tree.tree is now under sklearn.tree (as from v0.24). This can be see from the import error warning:
from sklearn.tree.tree import BaseDecisionTree
/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.tree.tree module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.tree. Anything that cannot be imported from sklearn.tree is now part of the private API.
warnings.warn(message, FutureWarning)
Instead, use:
from sklearn.tree import BaseDecisionTree
The problem is with the version of sklearn. Module sklearn.tree.tree is removed since version 0.24. Most probably, your model has been generated with the older version. Try installing an older version of sklearn:
pip uninstall scikit-learn
pip install scikit-learn==0.20.4
I was trying to draw a linear decision function which separates the two regions of data points in 2d input space using plot_2d_seperator function from figures module, even though figures and other modules have been installed in my device. But it is showing an error attached below.
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from figures import plot_2d_separator
It throws the following error:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-69-4a72dfe173de> in <module>
2 from sklearn.model_selection import train_test_split
3 from sklearn.linear_model import LogisticRegression
----> 4 from figures import plot_2d_separator
5
6 X, y = make_blobs(centers=2, random_state=0)
ImportError: cannot import name 'plot_2d_separator' from 'figures' (C:\ProgramData\Anaconda3\lib\site-packages\figures\__init__.py)
I am getting below error when running the code :-
from sklearn.preprocessing import LabelEncorder
LabelEncoder_X = LabelEncorder()
mod_set[:,0] = labelencorder_X.fit_transform(mod_set[:,0])
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-12-5d65523a64f6> in <module>
----> 1 from sklearn.preprocessing import LabelEncorder
2 LabelEncoder_X = LabelEncorder()
3 mod_set[:,0] = labelencorder_X.fit_transform(mod_set[:,0])
ImportError: cannot import name 'LabelEncorder' from 'sklearn.preprocessing' (/Users/kenilpatel/opt/anaconda3/lib/python3.7/site-packages/sklearn/preprocessing/__init__.py)
I tried reinstalling scikit as well as updating conda , but nothing seems to work.The problem is with Encorder only , Imputer and other things work fine .
You got a spelling mistake in your module import: LabelEncorder => LabelEncoder
# from sklearn.preprocessing import LabelEncorder
from sklearn.preprocessing import LabelEncoder
I entered the following code:
import sklearn
import sklearn as sk
import sklearn.preprocessing as skl
from sklearn.preprocessing import Imputer
from sk.preprocessing import Imputer
from skl import Imputer
The part which reads; from sklearn.preprocessing import Imputer gets executed normally.
However, when I run from sk.preprocessing import Imputer, I get the following error:
from sk.preprocessing import Imputer
Traceback (most recent call last):`
File "<ipython-input-84-fc12144914d1>", line 1, in <module>`
from sk.preprocessing import Imputer`
ModuleNotFoundError: No module named 'sk'`
And from skl import Imputer yields the following:
from skl import Imputer`
Traceback (most recent call last):`
File "<ipython-input-85-1e925587d122>", line 1, in <module>`
from skl import Imputer`
ModuleNotFoundError: No module named 'skl'`
Why am I not able to create a shortcut for the Library?
Because it is wrong to do so. The right way do do it is as you have written already.
from sklearn.preprocessing import Imputer
the __init__.py in the preprocessing directory of sklearn defines the possible imports from that level.
The below is a valid aliasing and i think is what you are looking for.
from sklearn.preprocessing import Imputer as imp