[PYTHON] [API Qiita] [Statistiques • Apprentissage automatique] J'ai essayé de résumer et d'analyser les articles publiés jusqu'à présent.

Cela fait environ six mois que j'ai commencé à publier sur Qiita, principalement pour des articles liés aux statistiques, à l'apprentissage automatique et à l'analyse de données. Revenons aux articles précédents en utilisant l'API Qiita. (Ci-après calculé à partir des données du 10 août 2015)

Nous examinerons d'abord les données, puis le code Python qui a généré ces contenus, et comment utiliser l'API Qiita de Python.

1. Afficher les données

Par nombre d'articles publiés

Vous êtes parmi les cinq premiers, avec 73%. Les articles populaires sont biaisés ... J'aime personnellement «La signification de la division des fractions comprise par pizza» en bas, mais il n'est pas du tout stocké. : sweat_smile:

Quantité en stock Pourcentage(%) Accumulation(%) Titre
750 28.1 28.1 [Apprentissage automatique] Je vais vous expliquer en essayant le cadre d'apprentissage profond Chainer.
595 22.3 50.4 [Mathématiques] Visualisons ce que sont les valeurs propres et les vecteurs propres
318 11.9 62.3 [Statistiques] Premier "écart-type" (pour éviter d'être frustré par les statistiques)
163 6.1 68.4 Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 1
124 4.6 73.1 [Apprentissage en profondeur] Essayez Autoencoder avec Chainer et visualisez le résultat.
82 3.1 76.1 [Mise à jour] Expliquez ce qu'est la méthode de descente de gradient stochastique en la déplaçant en Python
55 2.1 78.2 Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 2
52 1.9 80.1 Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 3
50 1.9 82.0 [Statistiques] Comprenez ce qu'est la courbe ROC par animation.
45 1.7 83.7 Visualisation et analyse des informations de localisation des données Twitter Stava
44 1.6 85.4 Essayez une analyse rudimentaire des sentiments sur les données de l'API Twitter Stream.
44 1.6 87.0 Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 1
40 1.5 88.5 Comprendre la signification des formules de distribution normale complexes et bizarres
31 1.2 89.7 Jouez des nombres manuscrits avec Python Partie 1
28 1.0 90.7 [Statistiques] Modèle mixte linéaire généralisé(GLMM)Visualisation pour comprendre.
28 1.0 91.8 [Statistiques] Visualisons la relation entre la distribution normale et la distribution du chi carré.
24 0.9 92.7 Explication du concept d'analyse de régression à l'aide de Python Partie 1
21 0.8 93.4 Introduction à la base de données Graph Neo4j en Python pour les débutants(Pour Mac OS X)
20 0.7 94.2 [Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
20 0.7 94.9 Visualisez la fréquence des occurrences de mots dans les phrases avec Word Cloud.[Python]
20 0.7 95.7 [Apprentissage automatique] k-nearest neighbor method(k méthode du plus proche voisin)Écrivez en python par vous-même et reconnaissez les nombres manuscrits
17 0.6 96.3 Obtenez des informations sur les 100 utilisateurs techniques de Twitter les plus influents au monde avec python.
16 0.6 96.9 [Statistiques] [R] Essayez d'utiliser la régression par points de division.
15 0.6 97.5 Jouez des nombres manuscrits avec python, partie 2 (identifier)
14 0.5 98.0 Explication du concept d'analyse de régression à l'aide de Python Extra 1
12 0.4 98.5 [Statistiques] Q-Comprenez comment le tracé Q fonctionne avec l'animation.
11 0.4 98.9 Explication du concept d'analyse de régression à l'aide de python Partie 2
11 0.4 99.3 Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 2
8 0.3 99.6 [python]Mémorandum de génération aléatoire
6 0.2 99.8 Préférences pour générer des GIF animés à partir de Python sur Mac
5 0.2 100.0 La signification de la division fractionnaire comprise dans la pizza

Catégorisé par catégorie

J'écris des articles dans les catégories «apprentissage automatique», «statistiques», «mathématiques», «analyse de données» et «autres».

Apprentissage automatique
[Apprentissage automatique] Je vais vous expliquer en essayant le cadre d'apprentissage profond Chainer.
[Apprentissage en profondeur] Essayez Autoencoder avec Chainer et visualisez le résultat.
[Mise à jour] Expliquez ce qu'est la méthode de descente de gradient stochastique en la déplaçant en Python
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 1
Jouez des nombres manuscrits avec Python Partie 1
[Apprentissage automatique] k-nearest neighbor method(k méthode du plus proche voisin)Écrivez en python par vous-même et reconnaissez les nombres manuscrits
Jouez des nombres manuscrits avec python, partie 2 (identifier)
Analyse en composantes principales Analyser les nombres manuscrits à l'aide de l'ACP. Partie 2

statistiques
[Statistiques] Premier "écart-type" (pour éviter d'être frustré par les statistiques)
[Statistiques] Comprenez ce qu'est la courbe ROC par animation.
Comprendre la signification des formules de distribution normale complexes et bizarres
[Statistiques] Modèle mixte linéaire généralisé(GLMM)Visualisation pour comprendre.
[Statistiques] Visualisons la relation entre la distribution normale et la distribution du chi carré.
Explication du concept d'analyse de régression à l'aide de Python Partie 1
[Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
[Statistiques] [R] Essayez d'utiliser la régression par points de division.
Explication du concept d'analyse de régression à l'aide de Python Extra 1
[Statistiques] Q-Comprenez comment le tracé Q fonctionne avec l'animation.
Explication du concept d'analyse de régression à l'aide de python Partie 2
[python]Mémorandum de génération aléatoire

Math
[Mathématiques] Visualisons ce que sont les valeurs propres et les vecteurs propres
La signification de la division fractionnaire comprise dans la pizza

L'analyse des données
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 1
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 2
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 3
Visualisation et analyse des informations de localisation des données Twitter Stava
Essayez une analyse rudimentaire des sentiments sur les données de l'API Twitter Stream.

Autre
Introduction à la base de données Graph Neo4j en Python pour les débutants(Pour Mac OS X)
Visualisez la fréquence des occurrences de mots dans les phrases avec Word Cloud.[Python]
Obtenez des informations sur les 100 utilisateurs techniques de Twitter les plus influents au monde avec python.
Préférences pour générer des GIF animés à partir de Python sur Mac

Par tag

Regardons chaque balise. Puisque j'utilise essentiellement Python, le nombre d'articles le plus élevé est Python. En regardant le ratio stock / article, «Deep Learning», «Deep Learning» et «Chainer» sont extrêmement élevés. Vous pouvez voir l'excitation de l'apprentissage en profondeur ces jours-ci.

Le taux de stock des «mathématiques» et de «l'apprentissage automatique» semble relativement élevé.

marque Nombre d'articles Quantité en stock Stock/Ratio d'article
Python 30 2664 88.8
statistics 22 1589 72.2
statistiques 17 1274 74.9
Apprentissage automatique 9 1127 125.2
Twitter 6 376 62.7
Traitement du langage naturel 6 379 63.2
Math 6 1054 175.7
matplotlib 5 63 12.6
MongoDB 4 314 78.5
MachineLearning 4 148 37.0
DeepLearning 2 874 437.0
statistiques 2 35 17.5
scikit-learn 2 55 27.5
L'apprentissage en profondeur 2 874 437.0
Grattage 2 37 18.5
Chainer 2 874 437.0
Base de données 1 21 21.0
Visualisation de données 1 45 45.0
Test statistique 1 12 12.0
Façon de penser 1 5 5.0
La reconnaissance de formes 1 50 50.0
Note 1 5 5.0
R 1 16 16.0
L'analyse des données 1 40 40.0
Visualisation 1 20 20.0
math 1 82 82.0
numpy 1 8 8.0
[Base de données graphique](http://qiita.com/tags/Basededonnées graphique) 1 21 21.0
BeautifulSoup 1 17 17.0
Modélisation statistique 1 28 28.0
neo4j 1 21 21.0
Introduction aux statistiques 1 11 11.0

En regardant le graphique, cela ressemble à ceci.

stock_article.png

Utilisateur de stock

J'imaginais que la même personne en stockerait beaucoup, mais à première vue, il semble qu'il y ait pas mal de monde. Le tableau ci-dessous montre les habitués qui sont bien approvisionnés. Merci: détendu:

Classement Quantité en stock
1 22
2 18
3 13
4 10
5 10
6 10
7 9
8 9
9 9
10 9
11 8
12 8
13 8
14 8
15 8
16 8
17 7
18 7
19 7
20 7

C'est un graphique des 150 premiers utilisateurs avec un grand nombre d'actions. Le nombre d'utilisateurs uniques était de 1771.

stock_num.png

C'est un histogramme du nombre de stocks. C'est plus proche de 1 à 5 titres que je ne l'imaginais. Faible taux de répétition ...: fatigué: À l'avenir, je ferai de mon mieux pour écrire des articles qui seront répétés!

stock_hist.png

2. Explication du code Python

Obtenir des données de l'API Qiita

Le jeton d'accès est Qiita [Paramètres] → [Applications] → [Émettre un nouveau jeton] Il peut être émis à. Veuillez définir le jeton acquis dans le '<jeton d'accès>' suivant.

%matplotlib inline
import requests
import json, sys
from collections import defaultdict
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('ggplot')

key = '<Jeton d'accès>'
auth_str = 'Bearer %s'%(key)
headers = {'Authorization': auth_str}
cnt = 0
data_list = []
users = defaultdict(int)

Définissez une fonction get_stockers pour obtenir l'utilisateur du stock et le nombre de stocks.

# -------------------Obtenez le nombre de stocks pour chaque article-----------------------#
def get_stockers(_id):
    global headers
    url = 'https://qiita.com/api/v2/items/{}/stockers'.format(_id)
    cnt = 0
    _sum = 0
    while True:
        cnt += 1
        payload = {'page': cnt, 'per_page': 20}
        res = requests.get(url, params=payload, headers=headers)
        data = res.json()
        for d in data:
            users[d['id']] += 1
        num = len(data)
        if num == 0:
            break
        _sum += num
        
    return _sum

Utilisez la boucle ci-dessous pour obtenir l'ensemble des articles que vous avez publiés, obtenir les informations sur l'utilisateur boursier associées et les conserver dans la liste.

# -------------------Acquisition d'informations sur l'article-----------------------#
url = 'https://qiita.com/api/v2/authenticated_user/items'

while True:
    cnt += 1
    sys.stdout.write("{}, ".format(cnt))
    payload = {'page': cnt, 'per_page': 20}
    res = requests.get(url, params=payload, headers=headers)
    data = res.json()
    if len(data) == 0:
        break
    data_list.extend(data)

res = []

Extraire les informations nécessaires à partir des données acquises et les organiser. De plus, les articles privés (messages partagés limités) sont exclus.

# -------------------Mise en forme des données-----------------------#
for i, d in enumerate(data_list):
    sys.stdout.write("{}, ".format(i))

    #Exclut les articles privés
    if d['private'] == True:
        continue
        
    article_info = {}
    for k in ['id', 'title', 'private', 'created_at', 'tags', 'url']:
        article_info[k] = d[k]
    
    article_info['stock'] = get_stockers(d['id'])
    res.append(article_info)

Ci-dessous, nous afficherons l'ensemble des articles, le nombre d'actions et le ratio sous une forme pouvant être collée sous forme de tableau de démarque.

sum_of_stocks = np.sum([r['stock'] for r in res]).astype(np.float32)

cum = 0
print "|Quantité en stock|Pourcentage(%)|Accumulation(%)|Titre|"
print "|:----------:|:----------:|:----------:|:----------|"
for i in np.argsort([r['stock'] for r in res])[::-1]:
    r = res[i]
    ratio = r['stock']/sum_of_stocks*100
    cum += ratio
    print "|{0}|{1:.1f}|{2:.1f}|[{3}]({4})|".format(r['stock'],ratio,cum,r['title'].encode('utf-8'),r['url'])

Agréger autour des balises.

#Agrégation de balises
tag_cnt = defaultdict(int)
for r in res:
    for t in r['tags']:
        tag_cnt[t['name']] += 1

#Nombre de stocks par tag
tag_stock_cnt = defaultdict(int)
for t in tag_cnt.keys():
    for r in res:
        for _t in r['tags']:
            if t == _t['name']:
                tag_stock_cnt[t] += r['stock']
tag_stock_dict = {}
for t, cnt in tag_stock_cnt.items():
    tag_stock_dict[t] = cnt

#Traité pour pouvoir être placé dans un DataFrame
tag_list = []
ind_list = []
for k, t in tag_cnt.items():
    ind_list.append(k)
    tag_list.append((t , tag_stock_dict[k]))

#Génération de trames de données
tag_list = np.array(tag_list)
df = pd.DataFrame(tag_list, index=ind_list, columns=['cnt', 'stocks'])

n = float(len(tag_cnt))
df['cnt_ratio'] = df['cnt']/n
df['stock_ratio'] = df['stocks']/sum_of_stocks

#Affichage de la quantité de stock et du ratio de stock par étiquette
df_tag = df.sort(columns='cnt', ascending=False)

print "|marque|Nombre d'articles|Quantité en stock|Stock/Ratio d'article|"
print "|:----------:|:----------:|:----------:|:----------:|"
for d in df_tag.iterrows():
    print "|[{0}](http://qiita.com/tags/{0})|{1}|{2}|{3:.1f}|".format(d[0].encode('utf-8'),int(d[1][0]),int(d[1][1]),d[1][1]/d[1][0])



#affichage graphique
df[['cnt_ratio','stock_ratio']].sort(columns='cnt_ratio', ascending=False).plot(kind="bar", figsize=(17, 8), alpha=0.7, 
                                title="The ratio of article and stocks for each tag.")

Ensuite, la fonction est agrégée et affichée à l'utilisateur.

#Agrégation d'utilisateurs
id_list = []
cnt_list = []
for _id, cnt in users.items():
    id_list.append((_id, cnt))

df = pd.DataFrame(id_list, columns=["id","cnt"])

#Affichage des 20 meilleures personnes
print "|Classement|Quantité en stock|"
print "|:----------:|:----------:|"
for i, d in enumerate(df.sort(columns="cnt", ascending=False)['cnt'][:20]):
    print "| {} | {} |".format(i+1, d)


#Graphique à barres des commandes utilisateur avec le plus de stock
df.sort(columns="cnt", ascending=False)[:150].plot(kind="bar", figsize=(17, 8), alpha=0.6, xticks=[], 
                                                   title="The number of stocks from 1 user.", width=1, color="blue")


#Histogramme d'inventaire
df['cnt'].plot(kind="hist", figsize=(13, 10), alpha=0.7, color="Green", bins=25, xlim=(1,26),
              title="Histgram of stocked users.")

Recommended Posts

[API Qiita] [Statistiques • Apprentissage automatique] J'ai essayé de résumer et d'analyser les articles publiés jusqu'à présent.
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
Qiita Job J'ai essayé d'analyser le travail
J'ai essayé de traiter et de transformer l'image et d'élargir les données pour l'apprentissage automatique
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
[Première API COTOHA] J'ai essayé de résumer l'ancienne histoire
J'ai essayé de vérifier la classification yin et yang des membres hololive par apprentissage automatique
J'ai essayé de résumer la commande umask
J'ai essayé de résumer la modélisation graphique.
J'ai essayé de toucher l'API COTOHA
J'ai essayé de résumer jusqu'à ce que je quitte la banque et devienne ingénieur
J'ai essayé d'appeler l'API de prédiction du modèle d'apprentissage automatique de WordPress
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé de résumer diverses phrases à l'aide de l'API de synthèse automatique "summpy"
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
Déterminez l'authenticité des articles publiés par machine learning (API Google Prediction).
J'ai essayé Web Scraping pour analyser les paroles.
J'ai essayé d'accéder à l'API Qiita depuis le début
LeetCode j'ai essayé de résumer les plus simples
J'ai essayé de prédire la présence ou l'absence de neige par apprentissage automatique.
J'ai essayé de prédire l'évolution de la quantité de neige pendant 2 ans par apprentissage automatique
Je n'ai pas compris le redimensionnement de TensorFlow, alors je l'ai résumé visuellement.
J'ai essayé de déplacer l'apprentissage automatique (détection d'objet) avec TouchDesigner
J'ai essayé de gratter YouTube, mais je peux utiliser l'API, alors ne le faites pas.
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
J'ai essayé de résumer la forme de base de GPLVM
[Pas de code] J'ai écrit sur les courbes elliptiques et la blockchain dans ma thèse de fin d'études, alors j'ai essayé de résumer la méthode d'étude
J'ai essayé de noter la syntaxe trop humoristique et humoristique en utilisant l'API COTOHA.
J'ai essayé de résumer les opérations de chaîne de Python
Comment générer le nombre de vues, de likes et de stocks d'articles publiés sur Qiita au format CSV (créé avec "Python + Qiita API v2")
Application correspondante, j'ai essayé de prendre des statistiques de personnes fortes et j'ai essayé de créer un modèle d'apprentissage automatique
J'ai considéré la méthode d'apprentissage automatique et son langage d'implémentation à partir des informations de balise de Qiita
J'ai essayé d'analyser les émotions de tout le roman "Weather Child" ☔️
J'ai essayé de résumer le code souvent utilisé dans Pandas
J'ai essayé l'apprentissage automatique pour convertir des phrases en style XX
J'ai essayé d'illustrer le temps et le temps du langage C
J'ai essayé d'afficher l'heure et la météo d'aujourd'hui w
J'ai essayé de résumer les commandes souvent utilisées en entreprise
[TF] J'ai essayé de visualiser le résultat de l'apprentissage en utilisant Tensorboard
J'ai essayé d'énumérer les différences entre java et python
J'ai essayé d'obtenir diverses informations de l'API codeforces
J'ai essayé de résumer comment utiliser à nouveau le référentiel EPEL
J'ai essayé de toucher l'API Qiita
J'ai essayé de résumer SparseMatrix
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Introduction ~
J'étais frustré par Kaggle, alors j'ai essayé de trouver une bonne propriété locative en grattant et en apprentissage automatique
J'ai essayé de trouver la différence entre A + = B et A = A + B en Python, alors notez
Je ne suis pas sûr de la différence entre les modules, les packages et les bibliothèques, alors j'ai essayé de les organiser.
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Implémentation ~
[Linux] J'ai essayé de résumer les commandes de confirmation des ressources
Obtenez le nombre de PV d'articles Qiita que vous avez publiés avec l'API
J'ai essayé d'analyser mon chanteur préféré (SHISHAMO) en utilisant l'API Spotify
J'ai essayé de résumer ce qui était sorti avec Qiita avec Word cloud
J'ai essayé de résumer les commandes utilisées par les ingénieurs débutants aujourd'hui
J'ai essayé d'extraire des noms de joueurs et de compétences d'articles sportifs
J'ai essayé de résumer la méthode de mise en œuvre fréquemment utilisée de pytest-mock
[Apprentissage automatique] J'ai essayé de faire quelque chose comme passer des images