{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "9075844d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BandGenre
0http://dbpedia.org/resource/Vintage_BlueRock
1http://dbpedia.org/resource/Tin_AlleyRock
2http://dbpedia.org/resource/The_RoulettesRock
3http://dbpedia.org/resource/BuhosRock
4http://dbpedia.org/resource/Ripe_Banana_SkinsRock
.........
195http://dbpedia.org/resource/Carl_CarltonSoul
196http://dbpedia.org/resource/Salsoul_OrchestraSoul
197http://dbpedia.org/resource/The_NextmenSoul
198http://dbpedia.org/resource/The_Jackson_SistersSoul
199http://dbpedia.org/resource/Orelha_NegraSoul
\n", "

200 rows × 2 columns

\n", "
" ], "text/plain": [ " Band Genre\n", "0 http://dbpedia.org/resource/Vintage_Blue Rock\n", "1 http://dbpedia.org/resource/Tin_Alley Rock\n", "2 http://dbpedia.org/resource/The_Roulettes Rock\n", "3 http://dbpedia.org/resource/Buhos Rock\n", "4 http://dbpedia.org/resource/Ripe_Banana_Skins Rock\n", ".. ... ...\n", "195 http://dbpedia.org/resource/Carl_Carlton Soul\n", "196 http://dbpedia.org/resource/Salsoul_Orchestra Soul\n", "197 http://dbpedia.org/resource/The_Nextmen Soul\n", "198 http://dbpedia.org/resource/The_Jackson_Sisters Soul\n", "199 http://dbpedia.org/resource/Orelha_Negra Soul\n", "\n", "[200 rows x 2 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's load the labels file\n", "import pandas as pd\n", "labels_file_path_str: str = \"./bands_labels.csv\"\n", "labels_df = pd.read_csv(labels_file_path_str, sep=\"\\t\")\n", "dfX = labels_df[[\"Band\"]]\n", "dfY = labels_df[[\"Genre\"]]\n", "labels_df" ] }, { "cell_type": "code", "execution_count": 2, "id": "d0a64c2f", "metadata": {}, "outputs": [], "source": [ "dfVectors = pd.read_csv(\"./oa100.txt\", sep = \" \", skiprows=[0])\n", "dfVectors.columns = [\"Band\"] + [f\"v{i}\" for i in range(0,101)] \n", "# drop last empty value\n", "dfVectors = dfVectors[[\"Band\"] + [f\"v{i}\" for i in range(0,100)]]" ] }, { "cell_type": "code", "execution_count": 3, "id": "592a0d5a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
v0v1v2v3v4v5v6v7v8v9...v90v91v92v93v94v95v96v97v98v99
Band
http://dbpedia.org/resource/Vintage_Blue-0.101661-0.1531320.227238-0.1041910.1694680.0973130.290867-0.172756-0.2148200.217480...-0.0046700.0938490.2310590.1221890.165482-0.122834-0.0588400.0761210.034616-0.276353
http://dbpedia.org/resource/Tin_Alley-0.083212-0.1949810.337864-0.1290910.1826300.1330890.364554-0.103778-0.1536160.314491...0.044746-0.0000480.2485490.2341270.186773-0.1244660.0653590.2049070.052136-0.221038
http://dbpedia.org/resource/The_Roulettes0.567702-0.2044871.514109-0.5000850.279755-0.4187951.104197-0.5334000.3570731.036889...-0.967095-0.1974161.0055670.7929351.090106-1.0297370.0778020.3590840.482350-0.829426
http://dbpedia.org/resource/Buhos-0.052553-0.1197920.331403-0.1183170.2488850.1117730.386889-0.134541-0.1374020.286090...0.049862-0.0186610.1836220.2974360.231518-0.1373090.1462910.1337070.006297-0.185696
http://dbpedia.org/resource/Ripe_Banana_Skins-0.052542-0.1270180.321062-0.1434780.2054480.1005990.367207-0.080136-0.1228460.210424...0.0141770.0158450.1829460.2591830.192614-0.1055720.0813040.1185930.019088-0.220585
..................................................................
http://dbpedia.org/resource/Carl_Carlton-0.059549-0.3321380.462567-0.4778670.4258340.4105360.9261060.041566-0.219600-0.090409...-0.2568820.1976300.7145950.6919110.401502-0.0617940.810864-0.0774210.0141730.097225
http://dbpedia.org/resource/Salsoul_Orchestra-0.054991-0.0758500.234934-0.268392-0.036323-0.2483650.8235460.1504420.6949650.445558...-0.954127-0.0299410.5324361.3085131.195635-0.3076820.2386141.0111020.107842-1.008286
http://dbpedia.org/resource/The_Nextmen0.163393-0.4769400.984449-0.887747-0.682041-0.4666491.1797780.6060940.0477630.193933...-1.6549980.1017191.7948940.429845-0.5183420.375744-0.2531640.1689150.2095500.038163
http://dbpedia.org/resource/The_Jackson_Sisters-0.121151-0.2180000.338082-0.1669150.2554040.1523930.449829-0.054923-0.1165480.212199...-0.0803440.0973200.3995610.3353780.260652-0.1506620.2506160.3190230.035124-0.265098
http://dbpedia.org/resource/Orelha_Negra-0.017703-0.0409500.050595-0.0315750.0382270.0123270.046358-0.072273-0.0453960.010551...-0.0105450.0354460.0273580.0273580.037674-0.014698-0.0008990.0108800.033274-0.069416
\n", "

200 rows × 100 columns

\n", "
" ], "text/plain": [ " v0 v1 v2 \\\n", "Band \n", "http://dbpedia.org/resource/Vintage_Blue -0.101661 -0.153132 0.227238 \n", "http://dbpedia.org/resource/Tin_Alley -0.083212 -0.194981 0.337864 \n", "http://dbpedia.org/resource/The_Roulettes 0.567702 -0.204487 1.514109 \n", "http://dbpedia.org/resource/Buhos -0.052553 -0.119792 0.331403 \n", "http://dbpedia.org/resource/Ripe_Banana_Skins -0.052542 -0.127018 0.321062 \n", "... ... ... ... \n", "http://dbpedia.org/resource/Carl_Carlton -0.059549 -0.332138 0.462567 \n", "http://dbpedia.org/resource/Salsoul_Orchestra -0.054991 -0.075850 0.234934 \n", "http://dbpedia.org/resource/The_Nextmen 0.163393 -0.476940 0.984449 \n", "http://dbpedia.org/resource/The_Jackson_Sisters -0.121151 -0.218000 0.338082 \n", "http://dbpedia.org/resource/Orelha_Negra -0.017703 -0.040950 0.050595 \n", "\n", " v3 v4 v5 \\\n", "Band \n", "http://dbpedia.org/resource/Vintage_Blue -0.104191 0.169468 0.097313 \n", "http://dbpedia.org/resource/Tin_Alley -0.129091 0.182630 0.133089 \n", "http://dbpedia.org/resource/The_Roulettes -0.500085 0.279755 -0.418795 \n", "http://dbpedia.org/resource/Buhos -0.118317 0.248885 0.111773 \n", "http://dbpedia.org/resource/Ripe_Banana_Skins -0.143478 0.205448 0.100599 \n", "... ... ... ... \n", "http://dbpedia.org/resource/Carl_Carlton -0.477867 0.425834 0.410536 \n", "http://dbpedia.org/resource/Salsoul_Orchestra -0.268392 -0.036323 -0.248365 \n", "http://dbpedia.org/resource/The_Nextmen -0.887747 -0.682041 -0.466649 \n", "http://dbpedia.org/resource/The_Jackson_Sisters -0.166915 0.255404 0.152393 \n", "http://dbpedia.org/resource/Orelha_Negra -0.031575 0.038227 0.012327 \n", "\n", " v6 v7 v8 \\\n", "Band \n", "http://dbpedia.org/resource/Vintage_Blue 0.290867 -0.172756 -0.214820 \n", "http://dbpedia.org/resource/Tin_Alley 0.364554 -0.103778 -0.153616 \n", "http://dbpedia.org/resource/The_Roulettes 1.104197 -0.533400 0.357073 \n", "http://dbpedia.org/resource/Buhos 0.386889 -0.134541 -0.137402 \n", "http://dbpedia.org/resource/Ripe_Banana_Skins 0.367207 -0.080136 -0.122846 \n", "... ... ... ... \n", "http://dbpedia.org/resource/Carl_Carlton 0.926106 0.041566 -0.219600 \n", "http://dbpedia.org/resource/Salsoul_Orchestra 0.823546 0.150442 0.694965 \n", "http://dbpedia.org/resource/The_Nextmen 1.179778 0.606094 0.047763 \n", "http://dbpedia.org/resource/The_Jackson_Sisters 0.449829 -0.054923 -0.116548 \n", "http://dbpedia.org/resource/Orelha_Negra 0.046358 -0.072273 -0.045396 \n", "\n", " v9 ... v90 \\\n", "Band ... \n", "http://dbpedia.org/resource/Vintage_Blue 0.217480 ... -0.004670 \n", "http://dbpedia.org/resource/Tin_Alley 0.314491 ... 0.044746 \n", "http://dbpedia.org/resource/The_Roulettes 1.036889 ... -0.967095 \n", "http://dbpedia.org/resource/Buhos 0.286090 ... 0.049862 \n", "http://dbpedia.org/resource/Ripe_Banana_Skins 0.210424 ... 0.014177 \n", "... ... ... ... \n", "http://dbpedia.org/resource/Carl_Carlton -0.090409 ... -0.256882 \n", "http://dbpedia.org/resource/Salsoul_Orchestra 0.445558 ... -0.954127 \n", "http://dbpedia.org/resource/The_Nextmen 0.193933 ... -1.654998 \n", "http://dbpedia.org/resource/The_Jackson_Sisters 0.212199 ... -0.080344 \n", "http://dbpedia.org/resource/Orelha_Negra 0.010551 ... -0.010545 \n", "\n", " v91 v92 v93 \\\n", "Band \n", "http://dbpedia.org/resource/Vintage_Blue 0.093849 0.231059 0.122189 \n", "http://dbpedia.org/resource/Tin_Alley -0.000048 0.248549 0.234127 \n", "http://dbpedia.org/resource/The_Roulettes -0.197416 1.005567 0.792935 \n", "http://dbpedia.org/resource/Buhos -0.018661 0.183622 0.297436 \n", "http://dbpedia.org/resource/Ripe_Banana_Skins 0.015845 0.182946 0.259183 \n", "... ... ... ... \n", "http://dbpedia.org/resource/Carl_Carlton 0.197630 0.714595 0.691911 \n", "http://dbpedia.org/resource/Salsoul_Orchestra -0.029941 0.532436 1.308513 \n", "http://dbpedia.org/resource/The_Nextmen 0.101719 1.794894 0.429845 \n", "http://dbpedia.org/resource/The_Jackson_Sisters 0.097320 0.399561 0.335378 \n", "http://dbpedia.org/resource/Orelha_Negra 0.035446 0.027358 0.027358 \n", "\n", " v94 v95 v96 \\\n", "Band \n", "http://dbpedia.org/resource/Vintage_Blue 0.165482 -0.122834 -0.058840 \n", "http://dbpedia.org/resource/Tin_Alley 0.186773 -0.124466 0.065359 \n", "http://dbpedia.org/resource/The_Roulettes 1.090106 -1.029737 0.077802 \n", "http://dbpedia.org/resource/Buhos 0.231518 -0.137309 0.146291 \n", "http://dbpedia.org/resource/Ripe_Banana_Skins 0.192614 -0.105572 0.081304 \n", "... ... ... ... \n", "http://dbpedia.org/resource/Carl_Carlton 0.401502 -0.061794 0.810864 \n", "http://dbpedia.org/resource/Salsoul_Orchestra 1.195635 -0.307682 0.238614 \n", "http://dbpedia.org/resource/The_Nextmen -0.518342 0.375744 -0.253164 \n", "http://dbpedia.org/resource/The_Jackson_Sisters 0.260652 -0.150662 0.250616 \n", "http://dbpedia.org/resource/Orelha_Negra 0.037674 -0.014698 -0.000899 \n", "\n", " v97 v98 v99 \n", "Band \n", "http://dbpedia.org/resource/Vintage_Blue 0.076121 0.034616 -0.276353 \n", "http://dbpedia.org/resource/Tin_Alley 0.204907 0.052136 -0.221038 \n", "http://dbpedia.org/resource/The_Roulettes 0.359084 0.482350 -0.829426 \n", "http://dbpedia.org/resource/Buhos 0.133707 0.006297 -0.185696 \n", "http://dbpedia.org/resource/Ripe_Banana_Skins 0.118593 0.019088 -0.220585 \n", "... ... ... ... \n", "http://dbpedia.org/resource/Carl_Carlton -0.077421 0.014173 0.097225 \n", "http://dbpedia.org/resource/Salsoul_Orchestra 1.011102 0.107842 -1.008286 \n", "http://dbpedia.org/resource/The_Nextmen 0.168915 0.209550 0.038163 \n", "http://dbpedia.org/resource/The_Jackson_Sisters 0.319023 0.035124 -0.265098 \n", "http://dbpedia.org/resource/Orelha_Negra 0.010880 0.033274 -0.069416 \n", "\n", "[200 rows x 100 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dfXvectors = pd.concat([dfX.set_index(\"Band\"), dfVectors.set_index(\"Band\")], axis=1, join=\"inner\")\n", "dfXvectors" ] }, { "cell_type": "code", "execution_count": 7, "id": "8c240cf8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.65" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# evaluate in 10-fold CV\n", "from sklearn.neural_network import MLPClassifier\n", "from sklearn.model_selection import cross_val_score\n", "import numpy as np\n", "clf = MLPClassifier(max_iter=10000)\n", "scores = cross_val_score(clf, dfXvectors, dfY.values.ravel(), cv=10)\n", "scores.mean()" ] }, { "cell_type": "code", "execution_count": 8, "id": "67a1e184", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.07745966692414834" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores.std()" ] }, { "cell_type": "code", "execution_count": 10, "id": "124d8717", "metadata": {}, "outputs": [], "source": [ "# Create new ground truth for visualization by classes\n", "# Targets: artists, record labels, cities\n", "# get all papers from the graph\n", "from rdflib import Graph, RDF, URIRef\n", "import re\n", "import pandas as pd\n", "import numpy as np\n", "\n", "g = Graph()\n", "g.parse('./artists_graph.nt')\n", "\n", "lst_entities = []\n", "lst_Y = []\n", "\n", "regexp = re.compile('^http://dbpedia.org/resource/[0-9a-zA-Z_()]+$',re.ASCII)\n", "\n", "class1_entities = set()\n", "for e in g.subjects(RDF.type,URIRef(\"http://dbpedia.org/ontology/RecordLabel\")):\n", " s = e.toPython()\n", " if regexp.match(s):\n", " class1_entities.add(s)\n", "\n", "for e in class1_entities:\n", " lst_entities.append(e)\n", " lst_Y.append(\"label\")\n", " \n", "class2_entities = set()\n", "for e in g.subjects(RDF.type,URIRef(\"http://dbpedia.org/ontology/MusicalWork\")):\n", " s = e.toPython()\n", " if regexp.match(s):\n", " class2_entities.add(s)\n", "\n", "for e in class2_entities:\n", " lst_entities.append(e)\n", " lst_Y.append(\"work\")\n", " \n", "class3_entities = set()\n", "for e in g.subjects(RDF.type,URIRef(\"http://dbpedia.org/ontology/Genre\")):\n", " s = e.toPython()\n", " if regexp.match(s):\n", " class3_entities.add(s)\n", "\n", "for e in class3_entities:\n", " lst_entities.append(e)\n", " lst_Y.append(\"genre\")\n", "\n", "# all other entities\n", "other_entities = set()\n", "for e in g.subjects():\n", " s = e.toPython()\n", " if regexp.match(s):\n", " if not (s in lst_entities):\n", " other_entities.add(s)\n", " \n", "for e in other_entities:\n", " lst_entities.append(e)\n", " lst_Y.append(\"-\")\n", "\n", "dfY = pd.DataFrame (lst_Y, columns = ['class'])" ] }, { "cell_type": "code", "execution_count": 12, "id": "ffe673c3", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Create a visualization\n", "from sklearn.decomposition import PCA\n", "import matplotlib.pyplot as plt\n", "\n", "dfVectorsOnly = dfVectors[[f\"v{i}\" for i in range(0,100)]]\n", "\n", "pca = PCA(n_components=2)\n", "pca_result = pca.fit_transform(dfVectorsOnly)\n", "principalDf = pd.DataFrame(data = pca_result\n", " , columns = ['principal component 1', 'principal component 2'])\n", "\n", "finalDf = pd.concat([principalDf, dfY], axis = 1)\n", "fig = plt.figure(figsize = (8,8))\n", "ax = fig.add_subplot(1,1,1) \n", "ax.set_xlabel('Principal Component 1', fontsize = 15)\n", "ax.set_ylabel('Principal Component 2', fontsize = 15)\n", "\n", "targets = ['work','label', 'genre']\n", "colors = ['r', 'b', 'g']\n", "for target, color in zip(targets,colors):\n", " indicesToKeep = finalDf['class'] == target\n", " ax.scatter(finalDf.loc[indicesToKeep, 'principal component 1']\n", " , finalDf.loc[indicesToKeep, 'principal component 2']\n", " , c = color)\n", "ax.legend(targets)\n", "ax.grid()" ] }, { "cell_type": "code", "execution_count": null, "id": "47ab6391", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 5 }