Vern  Greenholt

Vern Greenholt


ML model that Classify the robot from their sequence.

Problem Statement :

5 Robots, named quite unexpectedly 0,1,2,3,4 are having a uniform conversation, where each of them spits out a series of 10 numbers at a time in a round-robin fashion. Your Mission, if you choose to accept it, is to train a model which can predict the robot when given the 10 numbers spoken by it, with a good accuracy. A log of a long conversation between these 5 robots has been given, this is your dataset.

Goal : Develop an ML model that predicts the robot from their sequence with a good accuracy

Steps taken before Modelling:

1. Data Exploration and PreProcessing

a). Five point summary (min,max,quantiles(,mean) to understand the features and values distribution.

b). Distribution of Data (Deviation from Normality) is present in the dataset.

c). Check for Null/Missing/Ambiguos Values

d). Checking and Removing Duplicate values which leads to imbalanced class distribution in data.

e). Check the Normality of features with Shapiro Test (Statistical Analysis/Hypothesis (data is normal with alpha=0.05))

f). Checking for extreme values and outliers (z-score and quantile values)

g). Classes (Target) distribution, whether it is balanced or imbalanced.

h). Up-Sampling of the imbalanced classes 3 and 4 wrt number of datapoints for other classes.

Image for post

Image for post

Before And After Sampling for Imbalanced Classes

i). Correlation and plotting of the data points using pairplots.

j). Distinct 3 clusters are present after k-means and cluster analysis which tells us there is very much less segregation between two classes(3,1). They have nearly same or overlapping data-points.

Image for post

i). Since the data is whole numerical and very large value(order of le12) and also minimum values are as low as zero ,data transformation is necessary for decreasing this heavily right skewed data where minority of the values are very large and majority of the values are low.

j). Log Transformation : Best in this case but not used due to -inf and inf were getting introduced.

h). BoxCox Transformation: Since ,boxcox does take only value which are highly positive (i.e. >0 not 0) thus all the data rows having zero anywhere were dropped.

#machine-learning #principal-component #support-vector-machine #classification #imbalanced-data #deep learning

What is GEEK

Buddha Community

ML model that Classify the robot from their sequence.

Consider This: Theomorphic Robots; Not Losing Our Religion?

As icons and rituals adapt to newer technologies, the rise of robotics and AI can change the way we practice and experience spirituality.

**Some 100,000 years ago, fifteen people, eight of them children, were buried on the flank of [Mount Precipice], just outside the southern edge of [Nazareth] in today’s Israel. **One of the boys still held the antlers of a large red deer clasped to his chest, while a teenager lay next to a necklace of seashells painted with ochre and brought from the Mediterranean Sea shore 35 km away. The bodies of Qafzeh are some of the earliest evidence we have of grave offerings, possibly associated with religious practice.

Although some type of _belief _has likely accompanied us from the beginning, it’s not until 50,000–13,000 BCE that we see clear religious ideas take shape in paintings, offerings, and objects.** This is a period filled with Venus figurines, statuettes made of stone, bone, ivory and clay, portraying women with small heads, wide hips, and exaggerated breasts.** It is also the home of the beautiful** lion man**, carved out of mammoth ivory with a flint stone knife and the oldest-known zoomorphic (animal-shaped) sculpture in the world.

We’ve unearthed such representations of primordial gods, likely our first religious icons, all across Europe and as far as Siberia, and although we’ll never be able to ask their creators why they made them, we somehow still feel a connection with the stories they were trying to tell.

#robotics #artificial-intelligence #psychology #technology #hackernoon-top-story #religious-robots #robot-priest #robot-monk

Teresa  Jerde

Teresa Jerde


Artificial Intelligence and Robotics: Who’s At Fault When Robots Kill?

Up to now, any robots brushing with the law were always running strictly according to their code. Fatal accidents and serious injuries usually only happened through human misadventure or improper use of safety systems and barriers. We’ve yet to truly test how our laws will cope with the arrival of more sophisticated automation technology — but that day isn’t very far away.

AI already infiltrates our lives on so many levels in a multitude of practical, unseen ways. While the machine revolution is fascinating — and will cause harm to humans here and there — embodied artificial intelligence systems perhaps pose the most significant challenges for lawmakers.

Robots that run according to unchanging code are one thing and have caused many deaths and accidents over the years — not just in the factory but the operating theatre too. Machines that learn as they go are a different prospect entirely — and coming up with laws for dealing with that is likely to be a gradual affair.

Emergent robot behavior and the blame game

Emergent behavior is going to make robots infinitely more effective and useful than they’ve ever been before. The potential danger with emergent behavior is that it’s unpredictable. In the past, robots got programmed for set tasks – and that was that. Staying behind the safety barrier and following established protocols kept operators safe.

#artificial-intelligence #robots #robotics #legal #blame-the-user #blame-the-maker #blame-the-robot

Justice  Reilly

Justice Reilly


Deploying trained ML model on Heroku using Flask | End-to-End ML Project Tutorial

The series will cover everything from Data Collection to Model Deployment using Flask Web framework on Heroku!

GitHub Repository:…


#ml #heroku #ml #deploying

Markov and Hidden Markov Model

stochastic process is a collection of random variables that are indexed by some mathematical sets. That is, each random variable of the stochastic process is uniquely associated with an element in the set. The set that is used to index the random variables is called the **index set **and the set of random variables forms the state space. A stochastic **process **can be classified in many ways based on state space, index set, etc.

When the stochastic **process **is interpreted as time, if the process has a finite number of elements such as integers, numbers, and natural numbers then it is Discrete Time.

Stochastic Model

It is a discrete-time process indexed at time 1,2,3,…that takes values called states which are observed.

For an example if the states **(S) ={hot , cold }**

_State series over time => _z∈ S_T

Weather for 4 days can be a sequence => **{z1=hot, z2 =cold, z3 =cold, z4 =hot}**

Markov and Hidden Markov models are engineered to handle data which can be represented as ‘sequence’ of observations over time. Hidden Markov models are probabilistic frameworks where the observed data are modeled as a series of outputs generated by one of several (hidden) internal states.

Markov Assumptions

Markov models are developed based on mainly two assumptions.

  1. Limited Horizon assumption: Probability of being in a state at a time t depend only on the state at the time (t-1).

Image for post

Eq.1. Limited Horizon Assumption

That means state at time t represents _enough summary _of the past reasonably to predict the future. This assumption is an Order-1 Markov process. An order-k Markov process assumes conditional independence of state z_t from the states that are k + 1-time steps before it.

#hidden-markov-models #sequence-model #machine-learning #computer-science #time-series-model #deep learning

Thierry  Perret

Thierry Perret


5 Façons D'effectuer Une analyse Des Sentiments En Python

Qu'il s'agisse de Twitter, de Goodreads ou d'Amazon, il n'y a guère d'espace numérique qui ne soit pas saturé d'opinions. Dans le monde d'aujourd'hui, il est crucial pour les organisations d'approfondir ces opinions et d'obtenir des informations sur leurs produits ou services. Cependant, ces données existent en quantités si étonnantes que les évaluer manuellement est une poursuite presque impossible. C'est là qu'intervient une autre aubaine de la science des données  : l' analyse des sentiments . Dans cet article, nous allons explorer ce qu'englobe l'analyse des sentiments et les différentes façons de l'implémenter en Python.

Qu'est-ce que l'analyse des sentiments ?

L'analyse des sentiments est un cas d'utilisation du traitement du langage naturel (TLN) et relève de la catégorie de la classification de texte . Pour le dire simplement, l'analyse des sentiments consiste à classer un texte en différents sentiments, tels que positif ou négatif, heureux, triste ou neutre, etc. Ainsi, le but ultime de l'analyse des sentiments est de déchiffrer l'humeur, l'émotion ou le sentiment sous-jacent d'un texte. Ceci est également connu sous le nom d' Opinion Mining .

Voyons comment une recherche rapide sur Google définit l'analyse des sentiments :

définition de l'analyse des sentiments

Obtenir des informations et prendre des décisions grâce à l'analyse des sentiments

Eh bien, maintenant, je suppose que nous sommes quelque peu habitués à ce qu'est l'analyse des sentiments. Mais quelle est sa signification et comment les organisations en bénéficient-elles ? Essayons d'explorer la même chose avec un exemple. Supposons que vous démarriez une entreprise qui vend des parfums sur une plateforme en ligne. Vous proposez une large gamme de parfums et bientôt les clients commencent à affluer. Après un certain temps, vous décidez de changer la stratégie de prix des parfums - vous envisagez d'augmenter les prix des parfums populaires et en même temps d'offrir des remises sur les parfums impopulaires. . Maintenant, afin de déterminer quels parfums sont populaires, vous commencez à parcourir les avis des clients sur tous les parfums. Mais tu es coincé ! Ils sont tellement nombreux que vous ne pouvez pas tous les parcourir en une seule vie. C'est là que l'analyse des sentiments peut vous sortir de l'impasse.

Vous rassemblez simplement tous les avis en un seul endroit et y appliquez une analyse des sentiments. Ce qui suit est une représentation schématique de l'analyse des sentiments sur les critiques de trois parfums de parfums - Lavande, Rose et Citron. (Veuillez noter que ces avis peuvent avoir des fautes d'orthographe, de grammaire et de ponctuation, comme dans les scénarios du monde réel)

analyse des sentiments

A partir de ces résultats, nous pouvons clairement voir que :

Fragrance-1 (Lavande) a des critiques très positives de la part des clients, ce qui indique que votre entreprise peut augmenter ses prix compte tenu de sa popularité.

Il se trouve que Fragrance-2 (Rose) a une vision neutre parmi le client, ce qui signifie que votre entreprise ne doit pas modifier ses prix .

Fragrance-3 (Citron) a un sentiment global négatif qui lui est associé - votre entreprise devrait donc envisager d'offrir une remise pour équilibrer la balance.

Ce n'était qu'un exemple simple de la façon dont l'analyse des sentiments peut vous aider à mieux comprendre vos produits/services et aider votre organisation à prendre des décisions.

Cas d'utilisation de l'analyse des sentiments

Nous venons de voir comment l'analyse des sentiments peut donner aux organisations des informations qui peuvent les aider à prendre des décisions basées sur les données. Examinons maintenant d'autres cas d'utilisation de l'analyse des sentiments.

  1. Surveillance des médias sociaux pour la gestion de la marque : les marques peuvent utiliser l'analyse des sentiments pour évaluer les perspectives publiques de leur marque. Par exemple, une entreprise peut rassembler tous les Tweets avec la mention ou le tag de l'entreprise et effectuer une analyse des sentiments pour connaître les perspectives publiques de l'entreprise.
  2. Analyse des produits/services : les marques/organisations peuvent effectuer une analyse des sentiments sur les avis des clients pour voir dans quelle mesure un produit ou un service se comporte sur le marché et prendre des décisions futures en conséquence.
  3. Prévision du cours des actions : Prédire si les actions d'une entreprise vont monter ou descendre est crucial pour les investisseurs. On peut déterminer la même chose en effectuant une analyse des sentiments sur les titres des articles contenant le nom de l'entreprise. Si les gros titres concernant une organisation particulière ont un sentiment positif, le cours de ses actions devrait augmenter et vice-versa.

Façons d'effectuer une analyse des sentiments en Python

Python est l'un des outils les plus puissants lorsqu'il s'agit d'effectuer des tâches de science des données - il offre une multitude de façons d'effectuer une  analyse des sentiments . Les plus populaires sont enrôlés ici:

  1. Utilisation du blob de texte
  2. Utiliser Vador
  3. Utilisation de modèles basés sur la vectorisation de sacs de mots
  4. Utilisation de modèles basés sur LSTM
  5. Utilisation de modèles basés sur des transformateurs

Plongeons-les profondément un par un.

Remarque : Aux fins des démonstrations des méthodes 3 et 4 (utilisation de modèles basés sur la vectorisation de sacs de mots et utilisation de modèles basés sur LSTM) , l'analyse des sentiments a été utilisée. Il comprend plus de 5000 extraits de texte étiquetés comme positifs, négatifs ou neutres. Le jeu de données est sous licence Creative Commons.

Utilisation du blob de texte

Text Blob est une bibliothèque Python pour le traitement du langage naturel. L'utilisation de Text Blob pour l'analyse des sentiments est assez simple. Il prend le texte en entrée et peut renvoyer la polarité et la subjectivité en sortie.

La polarité détermine le sentiment du texte. Ses valeurs se situent dans [-1,1] où -1 dénote un sentiment très négatif et 1 dénote un sentiment très positif.

La subjectivité détermine si une entrée de texte est une information factuelle ou une opinion personnelle. Sa valeur est comprise entre [0,1] où une valeur plus proche de 0 dénote une information factuelle et une valeur plus proche de 1 dénote une opinion personnelle.

Mise en place :

pip install textblob

Importer un blob de texte :

from textblob import TextBlob

Implémentation de code pour l'analyse des sentiments à l'aide de Text Blob :

L'écriture de code pour l'analyse des sentiments à l'aide de TextBlob est assez simple. Importez simplement l'objet TextBlob et transmettez le texte à analyser avec les attributs appropriés comme suit :

from textblob import TextBlob
text_1 = "The movie was so awesome."
text_2 = "The food here tastes terrible."#Determining the Polarity 
p_1 = TextBlob(text_1).sentiment.polarity
p_2 = TextBlob(text_2).sentiment.polarity#Determining the Subjectivity
s_1 = TextBlob(text_1).sentiment.subjectivity
s_2 = TextBlob(text_2).sentiment.subjectivityprint("Polarity of Text 1 is", p_1)
print("Polarity of Text 2 is", p_2)
print("Subjectivity of Text 1 is", s_1)
print("Subjectivity of Text 2 is", s_2)


Polarity of Text 1 is 1.0 
Polarity of Text 2 is -1.0 
Subjectivity of Text 1 is 1.0 
Subjectivity of Text 2 is 1.0

Utiliser VADER

VADER (Valence Aware Dictionary and sEntiment Reasoner) est un analyseur de sentiments basé sur des règles qui a été formé sur le texte des médias sociaux. Tout comme Text Blob, son utilisation en Python est assez simple. Nous verrons son utilisation dans l'implémentation du code avec un exemple dans un moment.


pip install vaderSentiment

Importation de la classe SentimentIntensityAnalyzer depuis Vader :

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

Code pour l'analyse des sentiments à l'aide de Vader :

Tout d'abord, nous devons créer un objet de la classe SentimentIntensityAnalyzer ; alors nous devons passer le texte à la fonction polarity_scores() de l'objet comme suit :

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
sentiment = SentimentIntensityAnalyzer()
text_1 = "The book was a perfect balance between wrtiting style and plot."
text_2 =  "The pizza tastes terrible."
sent_1 = sentiment.polarity_scores(text_1)
sent_2 = sentiment.polarity_scores(text_2)
print("Sentiment of text 1:", sent_1)
print("Sentiment of text 2:", sent_2)

Sortie :

Sentiment of text 1: {'neg': 0.0, 'neu': 0.73, 'pos': 0.27, 'compound': 0.5719} 
Sentiment of text 2: {'neg': 0.508, 'neu': 0.492, 'pos': 0.0, 'compound': -0.4767}

Comme nous pouvons le voir, un objet VaderSentiment renvoie un dictionnaire de scores de sentiment pour le texte à analyser.

Utilisation de modèles basés sur la vectorisation de sacs de mots

Dans les deux approches discutées jusqu'à présent, c'est-à-dire Text Blob et Vader, nous avons simplement utilisé des bibliothèques Python pour effectuer une analyse des sentiments. Nous allons maintenant discuter d'une approche dans laquelle nous formerons notre propre modèle pour la tâche. Les étapes impliquées dans l'analyse des sentiments à l'aide de la méthode de vectorisation du sac de mots sont les suivantes :

  1. Prétraiter le texte des données de formation (le prétraitement du texte implique la normalisation, la tokenisation, la suppression des mots vides et la radicalisation/lemmatisation.)
  2. Créez un sac de mots pour les données textuelles prétraitées à l'aide de l'approche de vectorisation par comptage ou de vectorisation TF-IDF.
  3. Entraînez un modèle de classification approprié sur les données traitées pour la classification des sentiments.

Code pour l'analyse des sentiments à l'aide de l'approche de vectorisation du sac de mots :

Pour créer un modèle d'analyse des sentiments à l'aide de l'approche de vectorisation BOW, nous avons besoin d'un ensemble de données étiqueté. Comme indiqué précédemment, l'ensemble de données utilisé pour cette démonstration a été obtenu auprès de Kaggle. Nous avons simplement utilisé le vectoriseur de comptage de sklearn pour créer le BOW. Ensuite, nous avons formé un classificateur Multinomial Naive Bayes, pour lequel un score de précision de 0,84 a été obtenu.

L'ensemble de données peut être obtenu à partir d' ici .

#Loading the Dataset
import pandas as pd
data = pd.read_csv('Finance_data.csv')
#Pre-Prcoessing and Bag of Word Vectorization using Count Vectorizer
from sklearn.feature_extraction.text import CountVectorizer
from nltk.tokenize import RegexpTokenizer
token = RegexpTokenizer(r'[a-zA-Z0-9]+')
cv = CountVectorizer(stop_words='english',ngram_range = (1,1),tokenizer = token.tokenize)
text_counts = cv.fit_transform(data['sentences'])
#Splitting the data into trainig and testing
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(text_counts, data['feedback'], test_size=0.25, random_state=5)
#Training the model
from sklearn.naive_bayes import MultinomialNB
MNB = MultinomialNB(), Y_train)
#Caluclating the accuracy score of the model
from sklearn import metrics
predicted = MNB.predict(X_test)
accuracy_score = metrics.accuracy_score(predicted, Y_test)
print("Accuracuy Score: ",accuracy_score)

Sortie :

Accuracuy Score:  0.9111675126903553

Le classificateur formé peut être utilisé pour prédire le sentiment de n'importe quelle entrée de texte donnée.

Utilisation de modèles basés sur LSTM

Bien que nous ayons pu obtenir un score de précision décent avec la méthode de vectorisation du sac de mots, il se peut qu'elle ne donne pas les mêmes résultats lorsqu'il s'agit d'ensembles de données plus volumineux. Cela donne lieu à la nécessité d'utiliser des modèles basés sur l'apprentissage en profondeur pour la formation du modèle d'analyse des sentiments.

Pour les tâches NLP, nous utilisons généralement des modèles basés sur RNN car ils sont conçus pour traiter des données séquentielles. Ici, nous allons former un modèle LSTM (Long Short Term Memory) en utilisant TensorFlow avec Keras . Les étapes pour effectuer une analyse des sentiments à l'aide de modèles basés sur LSTM sont les suivantes :

  1. Prétraiter le texte des données de formation (le prétraitement du texte implique la normalisation, la tokenisation, la suppression des mots vides et la radicalisation/lemmatisation.)
  2. Importez Tokenizer depuis Keras.preprocessing.text et créez son objet. Ajustez le tokenizer sur l'ensemble du texte de formation (afin que le Tokenizer soit formé sur le vocabulaire des données de formation). Générez des incorporations de texte à l'aide de la méthode texts_to_sequence() du Tokenizer et stockez-les après les avoir remplies à une longueur égale. (Les incorporations sont des représentations numériques/vectorisées du texte. Comme nous ne pouvons pas alimenter directement notre modèle avec les données textuelles, nous devons d'abord les convertir en incorporations)
  3. Après avoir généré les plongements, nous sommes prêts à construire le modèle. Nous construisons le modèle à l'aide de TensorFlow - ajoutez-lui Input, LSTM et des couches denses. Ajoutez des abandons et réglez les hyperparamètres pour obtenir un score de précision décent. Généralement, nous avons tendance à utiliser les fonctions d'activation ReLU ou LeakyReLU dans les couches internes des modèles LSTM car cela évite le problème du gradient de fuite. Au niveau de la couche de sortie, nous utilisons la fonction d'activation Softmax ou Sigmoid.

Code pour l'analyse des sentiments à l'aide d'une approche de modèle basée sur LSTM :

Ici, nous avons utilisé le même jeu de données que celui que nous avons utilisé dans le cas de l'approche BOW. Une précision d'entraînement de 0,90 a été obtenue.

#Importing necessary libraries
import nltk
import pandas as pd
from textblob import Word
from nltk.corpus import stopwords
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
from keras.models import Sequential
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from keras.layers import Dense, Embedding, LSTM, SpatialDropout1D
from sklearn.model_selection import train_test_split 
#Loading the dataset
data = pd.read_csv('Finance_data.csv')
#Pre-Processing the text 
def cleaning(df, stop_words):
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x.lower() for x in x.split()))
    # Replacing the digits/numbers
    df['sentences'] = df['sentences'].str.replace('d', '')
    # Removing stop words
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join(x for x in x.split() if x not in stop_words))
    # Lemmatization
    df['sentences'] = df['sentences'].apply(lambda x: ' '.join([Word(x).lemmatize() for x in x.split()]))
    return df
stop_words = stopwords.words('english')
data_cleaned = cleaning(data, stop_words)
#Generating Embeddings using tokenizer
tokenizer = Tokenizer(num_words=500, split=' ') 
X = tokenizer.texts_to_sequences(data_cleaned['verified_reviews'].values)
X = pad_sequences(X)
#Model Building
model = Sequential()
model.add(Embedding(500, 120, input_length = X.shape[1]))
model.add(LSTM(704, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(352, activation='LeakyReLU'))
model.add(Dense(3, activation='softmax'))
model.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics = ['accuracy'])
#Model Training, y_train, epochs = 20, batch_size=32, verbose =1)
#Model Testing

Utilisation de modèles basés sur des transformateurs

Les modèles basés sur les transformateurs sont l'une des techniques de traitement du langage naturel les plus avancées. Ils suivent une architecture basée sur l'encodeur-décodeur et utilisent les concepts d'auto-attention pour donner des résultats impressionnants. Bien que l'on puisse toujours construire un modèle de transformateur à partir de zéro, c'est une tâche assez fastidieuse. Ainsi, nous pouvons utiliser des modèles de transformateurs pré-formés disponibles sur Hugging Face . Hugging Face est une communauté d'IA open source qui propose une multitude de modèles pré-formés pour les applications NLP. Ces modèles peuvent être utilisés tels quels ou être affinés pour des tâches spécifiques.


pip install transformers

Importation de la classe SentimentIntensityAnalyzer depuis Vader :

import transformers

Code pour l'analyse des sentiments à l'aide de modèles basés sur Transformer :

Pour effectuer une tâche à l'aide de transformateurs, nous devons d'abord importer la fonction de pipeline à partir des transformateurs. Ensuite, un objet de la fonction pipeline est créé et la tâche à effectuer est passée en argument (c'est-à-dire l'analyse des sentiments dans notre cas). Nous pouvons également spécifier le modèle que nous devons utiliser pour effectuer la tâche. Ici, puisque nous n'avons pas mentionné le modèle à utiliser, le mode distillery-base-uncased-finetuned-sst-2-English est utilisé par défaut pour l'analyse des sentiments. Vous pouvez consulter la liste des tâches et des modèles disponibles ici .

from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = ["It was the best of times.", "t was the worst of times."]
sentiment_pipeline(data)Output:[{'label': 'POSITIVE', 'score': 0.999457061290741},  {'label': 'NEGATIVE', 'score': 0.9987301230430603}]


À cette époque où les utilisateurs peuvent exprimer leurs points de vue sans effort et où les données sont générées en superflu en quelques fractions de secondes seulement - tirer des enseignements de ces données est vital pour que les organisations prennent des décisions efficaces - et l'analyse des sentiments s'avère être la pièce manquante du puzzle !

Nous avons maintenant couvert en détail ce qu'implique exactement l'analyse des sentiments et les différentes méthodes que l'on peut utiliser pour l'exécuter en Python. Mais ce n'étaient que quelques démonstrations rudimentaires - vous devez sûrement aller de l'avant et jouer avec les modèles et les essayer sur vos propres données.

Source :