I want to plot the loss_curve by using the following code:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPRegressor
def plotCurves(Xtrain,ytrain,Xval,yval):
solver=["lbfgs", "sgd", "adam"]
for i in solver:
mlp=MLPRegressor(activation='relu',max_iter=1000,solver=i)
mlp.fit(Xtrain,ytrain)
pred=mlp.predict(Xval)
print (mlp.score(Xval,yval))
pd.DataFrame(mlp.loss_curve_).plot()
However, when I run my code the following error appears:
'MLPRegressor' object has no attribute 'loss_curve_'
and in the Anaconda IDE version 1.9.7 it appears this method when I am coding.
What can I try to solve this?
Only the stochastic solvers will expose a loss_curve_ attribute on the estimator after fit, so in your first iteration it fails with the lbfgs solver. You can verify this with the following:
from sklearn.datasets import make_classification
from sklearn.neural_network import MLPRegressor
X, y = make_classification(n_samples=5)
solver=[
"lbfgs",
"sgd",
"adam"
]
for i in solver:
mlp = MLPRegressor(activation='relu',solver=i)
mlp.fit(X,y)
print(hasattr(mlp, "loss_curve_"))
False
True
True
If you want to access this attribute, you'll want to stick with either the adam or sgd solver.
Related
I am running the follwing code:
!pip install scikit-learn==0.24
import sklearn.metrics
mape = mean_absolute_percentage_error(target_test.values, p)
but then get an error. What is the problem with this code?
If you only need this function from sklearn.metrics it is recommended to also
import only this function by using:
from sklearn.metrics import mean_absolute_percentage_error
...
If you want to keep the syntax of your import as is, you have to call the function the following way:
mape = sklearn.metrics.mean_absolute_percentage_error(target_test.values, p)
If this is too long for you, you can import it and give it an own name:
import sklearn.metrics as skmetr
mape = skmetr.mean_absolute_percentage_error(target_test.values, p)
I am on my second day of re-taking Python for the gazillionth time!
I am doing a tutorial on ML in Python, using the following code:
import sklearn.tree
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import tree
music_data = pd.read_csv('music.csv')
x = music_data.drop(columns=['genre'])
y = music_data['genre']
model = DecisionTreeClassifier()
model.fit(x,y)
tree.export_graphviz(model, out_file='music-recommender.dot',
feature_names=['age','gender'],
class_names= sorted(y.unique()),
label='all',
rounded=True,
filled=True)
I keep getting the following error:
ImportError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_13088/3820271611.py in <module>
2 import pandas as pd
3 from sklearn.tree import DecisionTreeClassifier
----> 4 from sklearn.tree import tree
5
6 music_data = pd.read_csv('music.csv')
ImportError: cannot import name 'tree' from 'sklearn.tree' (C:\Anaconda\lib\site-packages\sklearn\tree\__init__.py)
I've tried to find a solution online, but I don't think it's the version of Python/Anaconda because I literally just installed both. I also don't think it's the sklearn.tree since I was able to import DecisionClassifer.
As this answer indicates, you're looking at some older code; this is always a risk with programming. But there's another thing you need to know about your code.
First off, scikit-learn contains several modules, and almost everything you need from it is in one of those. In my experience, most people import things like this:
from sklearn.tree import DecisionTreeRegressor # A regressor class.
from sklearn.tree import plot_tree # A helpful function.
from sklearn.metrics import mean_squared_error # An evaluation function.
It looks like the tutorial wants something similar to plot_tree(). This new-ish function is much easier to use than the older Graphviz visualization. So unless you really need the DOT file for some reasons, you should be able to do this:
from sklearn.tree import plot_tree
sklearn.tree.plot_tree(model)
Bottom line: there will probably be more broken things in that material. So if I were you I'd either make a new environment with a version of sklearn matching whatever material you're using... or ditch that material and look for something newer.
from sklearn.tree import tree looks wrong. Did you mean from sklearn import tree ?
According to the official Scikit Learn Decision Trees Documentation you really do not need too much of importing.
It can be done simply as follows:
from sklearn import tree
import pandas as pd
music_data = pd.read_csv('music.csv')
X = music_data.drop(columns=['genre'])
y = music_data['genre']
model = tree.DecisionTreeClassifier()
model.fit(X,y)
I am getting error
ImportError: cannot import name 'predict' from
'sklearn.linear_model'(/opt/anaconda3/lib/python3.8/site-packages/sklearn/linear_model/init.py)
Tried everything ! Can anyone help!
predict is not part of the sklearn.linear_model module. It's a method of the linear models that are within the module. For example:
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regression.fit(X, y)
regression.predict(X)
This is my code.
I use jupyter notebook trying to start machine learning after learning the basics so if you have other tips much appreciated.
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
music_data = pd.read_csv('music.csv')
X = music_data.drop(columns = ['genre'])
y = music_data['genre']
model = DecisionTreeClassifier
model.fit(X,y)
music_data
and I get an error "model.fit is missing the positional argument y".
Why does this work,
from sklearn.metrics import mean_squared_error
but not the other?
import sklearn.metrics.mean_squared_error as mse
This gives
ModuleNotFoundError: No module named 'sklearn.metrics.mean_squared_error'
It is not possible because mean_squared_error is a function is my guess?
You cannot import sklearn.metrics.mean_squared_error because it is not a module but a function, yes. The as part stands completely independently. So you can, for example, from sklearn.metrics import mean_squared_error as mse.