1595853000
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.
a). Five point summary (min,max,quantiles(0.25.0.75),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.
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.
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
1604142000
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
1596624060
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 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
1595296029
The series will cover everything from Data Collection to Model Deployment using Flask Web framework on Heroku!
GitHub Repository: https://github.com/dswh/fuel-consumpt…
Subscribe: https://www.youtube.com/c/DataSciencewithHarshit/featured
#ml #heroku #ml #deploying
1598165400
A 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.
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 models are developed based on mainly two assumptions.
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
1657272480
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.
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 :
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)
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.
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.
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:
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.
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)
Production:
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
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.
Installation:
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.
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 :
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()
MNB.fit(X_train, 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.
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 :
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=' ')
tokenizer.fit_on_texts(data_cleaned['verified_reviews'].values)
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(SpatialDropout1D(0.4))
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'])
print(model.summary())
#Model Training
model.fit(X_train, y_train, epochs = 20, batch_size=32, verbose =1)
#Model Testing
model.evaluate(X_test,y_test)
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.
Installation:
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 : https://www.analyticsvidhya.com/blog/2022/07/sentiment-analysis-using-python/