독서캠프 코드 |
|||||
---|---|---|---|---|---|
작성자 | 오재관 | 등록일 | 25.07.14 | 조회수 | 13 |
import pandas as pd music_df=pd.read_csv('train.csv') music_df.tail()
music_df.info()
music_df.isnull().sum() numeric_cols=music_df.select_dtypes(include='number') mean=numeric_cols.mean() data=music_df.fillna(mean) data.info()
import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) corr=data.corr(numeric_only=True) sns.heatmap(corr, annot=True,cmap='YlGnBu')
plt.figure(figsize=(40, 8)) sns.set(style='whitegrid') x=data.groupby('Track Name')['Popularity'].mean().sort_values(ascending=False).head(10) axis=sns.barplot(x=x.index, y=x) axis.set_ylabel('Popularity',fontsize=20) axis.set_xlabel('Song Title',fontsize=20)
X=data.iloc[:, 2:16] y=data['Class']
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test=train_test_split(X,y,test_size=0.2, random_state=42) print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.svm import LinearSVC svm_clf=Pipeline( [('scaler', StandardScaler()), ('linear_svc', LinearSVC(C=1, loss='hinge', random_state=42))] ) svm_clf.fit(X_train, y_train)
svm_clf.score(X_train, y_train)
svm_clf.score(X_test, y_test)
## 상당한 시간이 소요됨(10초정도) from sklearn.svm import SVC poly_kernel_svm_clf=Pipeline([ ('scaler', StandardScaler()), ('svm_clf', SVC(kernel='poly', degree=3, coef0=1, C=5)) ]) poly_kernel_svm_clf.fit(X_train, y_train)
poly_kernel_svm_clf.score(X_train, y_train)
poly_kernel_svm_clf.score(X_test, y_test)
rbf_kernel_svm_clf=Pipeline([ ('scaler', StandardScaler()), ('svm_clf', SVC(kernel='rbf', gamma=1, C=0.001)) ]) poly_kernel_svm_clf.score(X_train, y_train) poly_kernel_svm_clf.score(X_test, y_test)
# 실제 분류
def extract_features(file_path): y, sr = librosa.load(file_path) features = []
features.append(0) # Popularity placeholder
features.append(np.mean(librosa.feature.zero_crossing_rate(y)).item()) features.append(np.mean(librosa.feature.rms(y=y)).item())
chroma = librosa.feature.chroma_stft(y=y, sr=sr) features.append(int(np.argmax(np.mean(chroma, axis=1))))
S = librosa.feature.melspectrogram(y=y, sr=sr) features.append(np.mean(librosa.power_to_db(S)).item())
features.append(1) # mode placeholder
features.append(np.mean(librosa.feature.spectral_centroid(y=y, sr=sr)).item()) features.append((1 - np.mean(librosa.feature.spectral_bandwidth(y=y, sr=sr))).item()) features.append((1 - np.mean(librosa.feature.zero_crossing_rate(y))).item()) features.append(np.mean(librosa.feature.spectral_rolloff(y=y, sr=sr)).item())
harmonic = librosa.effects.harmonic(y) tonnetz = librosa.feature.tonnetz(y=harmonic, sr=sr) features.append(np.mean(tonnetz).item())
tempo, _ = librosa.beat.beat_track(y=y, sr=sr) features.append(tempo.item())
duration = librosa.get_duration(y=y, sr=sr) features.append(duration)
features.append(4) # time_signature placeholder
return np.array(features) features = extract_features('06.mp3').reshape(1, -1) print("Features 개수:", features.shape[1]) # 반드시 14개 print("Features:", features) prediction = poly_kernel_svm_clf.predict(features) print("예측 장르:", prediction[0])
|
다음글 | 온라인 코딩파티 |
---|