Music Genre Recommendation
Imports
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import tree
import joblib
import pandas
from sklearn import tree
import pydotplus
import matplotlib.pyplot as plt
import matplotlib.image as pltimg
Data Load
df = pd.read_csv("music.csv")
Data Summery
df.shape
df
df.head()
df.tail()
df.describe()
Data Preparation
X = df.drop(columns=["genre"])
X
y = df["genre"]
y
Splitting Dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
Finding Shapes
[X_train.shape, X_test.shape, y_train.shape, y_test.shape]
Defining and Training Model
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
Saving Model
# joblib.dump(model, "music_recommender.joblib")
Visualizing Decision Tree
tree.export_graphviz(
model,
out_file="music_recommender.dot",
feature_names=["age", "gender"],
class_names=sorted(y_train.unique()),
label="all",
rounded=True,
filled=True
)
data = tree.export_graphviz(
model,
out_file=None,
feature_names=["age", "gender"],
class_names=sorted(y_train.unique()),
label="all",
rounded=True,
filled=True
)
graph = pydotplus.graph_from_dot_data(data)
graph.write_png('mydecisiontree.png')
img = pltimg.imread('mydecisiontree.png')
imgplot = plt.imshow(img)
plt.show()
Finding Accuracy
predictions = model.predict(X_test)
score = accuracy_score(y_test, predictions)
print(f"Accuracy = {score * 100}%")