Nyheter, Prylar, Android, Mobiler, Appnedladdningar, Android

Aktieprisprediktionsmodell för Netflix – Mot AI

Följande artikel hjälper dig: Aktieprisprediktionsmodell för Netflix – Mot AI

En jämförande studie av linjär regression, K-Nearest Neighbor (KNN) och Support Vector Machine (SVM)

Syftet med den här artikeln är att utforma en linjär modell för aktieprognoser för att förutsäga slutkursen för Netflix. Detta kommer att vara en jämförande studie av olika maskininlärningsmodeller såsom linjär regression, K-närmaste granne och stödvektormaskiner.

Innan jag designade modellen gick jag igenom några av de investeringsrelaterade bloggarna och artiklarna på internet för att få en bättre förståelse av saken och jag fick reda på några nyckelindikatorer som bestämmer öppnings- och stängningskursen för en aktie. Därför kommer den här handledningen om träning av modellen inte att vara begränsad till en enda funktion, utan det kommer att vara en utbildad modell med flera funktioner.

Aktiemarknadens grundläggande påverkansfaktor

Som datavetare eller ml-proffs underlättar det vårt arbete när vi har en affärsmässig eller funktionell klarhet i vad vi försöker bygga, så jag tänkte att jag måste dela med mig av lite affärsinsikt också, men jag är inte ett aktiemarknadsproffs. men jag trodde att det skulle bygga upp en förståelse. så i princip slutkurs är det senaste priset som en köpare betalade för den aktuella aktien under kontorstid och öppningspriset är priset för den första transaktionen av aktien, och det är ett mycket vanligt fenomen inom aktiehandel att en öppningspris kan skilja sig från slutkursen, anledningen är fluktuationen mellan efterfrågan och utbud som avgör hur attraktiv en aktie är. detta fenomen kallas AHT (handel efter arbetstid) som spelar en avgörande roll för att flytta öppningspriset på en aktie. det finns andra faktorer och jag är ingen expert på sådana frågor så jag tänker inte gräva djupt i det. denna lilla informationsbit skulle ge en grundläggande inblick i det verkliga problemet.så utan att slösa mer låt oss hoppa till lösningen “kodning

1. Importförutsättningar:

importera pandor som pd från sklearn.linear_model import LinearRegression från sklearn.model_selection import train_test_split importera matplotlib.pyplot som plt importera numpy som np importera pandas_datareader som webb

pandas_datareader-biblioteket låter oss ansluta till webbplatsen och extrahera data direkt från internetkällor i vårt fall extraherar vi data från Yahoo Finance API.

2. Läs och visa

df = web.DataReader(‘NFLX’, data_source=’yahoo’, start=’2012–01–01′, end=’2020–04–28′) df.tail(10)

NFLX aktiekurs

df.reset_index(inplace=True) df.describe()

Statistik över aktiekursen

3. Kontrollera efter korrelation

Innan vi kollar efter korrelation kan vi förstå vad exakt det är?

Korrelation är ett mått på association eller beroende mellan två egenskaper, dvs hur mycket Y kommer att variera med en variation i X. Korrelationsmetoden som vi kommer att använda är Pearson-korrelationen.

Pearson korrelationskoefficient är det mest populära sättet att mäta korrelation, värdeintervallet varierar från -1 till 1. I matematik/fysiktermer kan det förstås som att två egenskaper är positivt korrelerade då de är direkt proportionerlig och om de delar negativ korrelation så är de det omvänt proportionell.

corr = df.corr(metod=’pearson’) corr

Pearson korrelationskoefficient

Inte all text är förståelig, låt oss visualisera korrelationskoefficienten.

importera seaborn som sb sb.heatmap(corr,xticklabels=corr.columns, yticklabels=corr.columns, cmap=’RdBu_r’, annot=True, linewidth=0.5)

Korrelationskarta

The Dark Maroon zone är inte Maroon5, haha ​​skämt, men det betecknar de mycket korrelerade egenskaperna.

4. Visualisera den beroende variabeln med oberoende funktioner

#prepare dataset för att fungera med nflx_df=df[[‘Date’,’High’,’Open’,’Low’,’Close’]]nflx_df.head(10) plt.figure(figsize=(16,8)) plt.title(‘Netflix Aktiers slutkurshistorik 2012-2020’) plt.plot(nflx_df[‘Date’],nflx_df[‘Close’]) plt.xlabel(‘Date’,fontsize=18) plt.ylabel(‘Stängpris US($)’,fontsize=18) plt.style.use(‘fivethirtyeight’) plt.show()

Datum kontra slutkurs

#Plot Open vs Close nflx_df[[‘Open’,’Close’]].head(20).plot(kind=’bar’,figsize=(16,8)) plt.grid(which=”major”, linestyle=”-“, linewidth=”0.5″, color=”green” ) plt.grid(which=”minor”, linestyle=”:”, linewidth=”0.5″, color=”black”) plt.show()

Öppet vs stängt pris

#Plot High vs Close nflx_df[[‘High’,’Close’]].head(20).plot(kind=’bar’,figsize=(16,8)) plt.grid(which=”major”, linestyle=”-“, linewidth=”0.5″, color=”green” ) plt.grid(which=”minor”, linestyle=”:”, linewidth=”0.5″, color=”black”) plt.show()

Högt kontra stängt pris

#Plot Low vs Close nflx_df[[‘Low’,’Close’]].head(20).plot(kind=’bar’,figsize=(16,8)) plt.grid(which=’major’, linestyle=’-‘, linewidth=’0.5′, color=’green’ ) plt.grid(which=’minor’, linestyle=’:’, linewidth=’0.5′, color=’black’) plt.show()

Lågt kontra slutkurs

5. Modellutbildning och testning

#Datumformat är DateTime och det kommer att ge ett fel under träning så jag har skapat separata månads-, år- och datumenheter nflx_df[‘Year’]=df[‘Date’].dt.år nflx_df[‘Month’]=df[‘Date’].dt.månad nflx_df[‘Day’]=df[‘Date’].dt.dag

Skapa den slutliga datamängden för modellträning

nfx_df=nflx_df[[‘Day’,’Month’,’Year’,’High’,’Open’,’Low’,’Close’]]nfx_df.head(10)

Slutlig utbildningsdatauppsättning

#separate Oberoende och beroende variabel X = nfx_df.iloc[:,nfx_df.columns !=’Close’]Y= nfx_df.iloc[:, 5]print(X.shape) #output: (2093, 6) print(Y.shape) #output: (2093,)

Dela upp datasetet i träna och testa

från sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test= train_test_split(X,Y,test_size=.25) print(x_train.shape) #output: (1569, 6) print(x_test.shape) #output: (524) , 6) print(y_train.shape) #output: (1569,) print(y_test.shape) #output: (524,) #y_test ska utvärderas med y_pred för Diff-modeller

Modell 1: Linjär regression

Linjär regressionsmodell träning och testning

lr_model=LinearRegression() lr_model.fit(x_train,y_train) y_pred=lr_model.predict(x_test)

Linjär modell korsvalidering

Vad är exakt korsvalidering?

I grund och botten är korsvalidering en teknik som använder vilken modell som utvärderas på datamängden som den inte är tränad på, dvs det kan vara en testdata eller kan vara en annan uppsättning beroende på tillgänglighet eller genomförbarhet.

från sklearn import model_selection från sklearn.model_selection import KFold kfold = model_selection.KFold(n_splits=20, random_state=100) results_kfold = model_selection.cross_val_score(lr_model, x_test, y_test.astype(‘int’)), print(kfold) Noggrannhet: “, results_kfold.mean()*100) #output: Noggrannhet: 99.999366595175

Plot faktiskt vs förutsagt värde

plot_df=pd.DataFrame({‘Actual’:y_test,’Pred’:y_pred}) plot_df.head(20).plot(kind=’bar’,figsize=(16,8)) plt.grid(which=” major”, linestyle=”-“, linewidth=”0.5″, color=”green”) plt.grid(which=”minor”, linestyle=”:”, linewidth=”0.5″, color=”black”) plt .show()

Linjär faktisk vs förutspådd

Modell 2: KNN K-närmaste granne Regressionsmodell

KNN Model Training and Testing

från sklearn.neighbors import KNeighborsRegressor knn_regressor=KNeighborsRegressor(n_neighbors = 5) knn_model=knn_regressor.fit(x_train,y_train) y_knn_pred=knn_model.predict(x_test)

KNN-korsvalidering

knn_kfold = model_selection.KFold(n_splits=20, random_state=100) results_kfold = model_selection.cross_val_score(knn_model, x_test, y_test.astype(‘int’), cv=knn_kfold) print(“Noggrannhet: “, results_kfold.mean 100) #output: Noggrannhet: 99,93813335235933

Handling Faktisk vs förutspådd

plot_knn_df=pd.DataFrame({‘Actual’:y_test,’Pred’:y_knn_pred}) plot_knn_df.head(20).plot(kind=’bar’,figsize=(16,8)) plt.grid(which=’ major’, linestyle=’-‘, linewidth=’0.5′, color=’green’) plt.grid(which=’minor’, linestyle=’:’, linewidth=’0.5′, color=’black’) plt .show()

KNN Faktisk vs förutspådd

Modell 3: SVM Support Vector Machine Regression Model

SVM Model Training and Testing

från sklearn.svm import SVR svm_regressor = SVR(kernel=’linear’) svm_model=svm_regressor.fit(x_train,y_train) y_svm_pred=svm_model.predict(x_test)

Handling Faktisk vs förutspådd

plot_svm_df=pd.DataFrame({‘Actual’:y_test,’Pred’:y_svm_pred}) plot_svm_df.head(20).plot(kind=’bar’,figsize=(16,8)) plt.grid(which=’ major’, linestyle=’-‘, linewidth=’0.5′, color=’green’) plt.grid(which=’minor’, linestyle=’:’, linewidth=’0.5′, color=’black’) plt .show()

SVM Faktisk vs förutspådd

RMSE (Root Mean Square Error)

Root Mean Square Error är standardavvikelsen för residualer, som är ett mått på hur långt datapunkter är från regressionen. Eller enkelt uttryckt hur koncentrerade datapunkterna är runt den bästa passformen.

från sklearn.metrics import mean_squared_error , r2_score import math lr_mse=math.sqrt(mean_squared_error(y_test,y_pred)) print(‘Linear Model Root mean square error’,lr_mse) knn_mse=math.sqrt_red_mean (‘KNN Model Root mean square error’,mse) svm_mse=math.sqrt(mean_squared_error(y_test,y_svm_pred)) print(‘SVM Model Root mean square error SVM’,svm_mse) #outputs as below: Linear Model Root mean square error 1,7539775065782694e-14 KNN modell Root mean square error 1,7539775065782694e-14 SVM Model Root mean square error SVM 0,0696764093622963

R2 eller r-kvadratfel

R2 eller r2 poäng varierar mellan 0 och 100%.

Matematisk formel för r2 poäng :(y_test[i]— y_pred[i]) **2

print(‘Linear R2: ‘, r2_score(y_test, y_pred)) print(‘KNN R2: ‘, r2_score(y_test, y_knn_pred)) print(‘SVM R2: ‘, r2_score(y_test, y_svm_pred)) #output enligt nedan: Linjär R2: 1,0 KNN R2: 0,9997974105145412 SVM R2: 0,9999996581785765

För grundläggande matematisk förståelse på RMSE och R2 fel hänvisa till min blogg: https://www.geeksforgeeks.org/ml-mathematical-explanation-of-rmse-and-r-squared-error/

Vår modell ser väldigt bra ut med fenomenal statistik.

Sammanfattning:

· Användning av förutsättningsbibliotek

· Dataextraktion från webben med hjälp av pandas_datareader

· Grundläggande aktieförståelse

· Modellträning och testning

· ML-algoritmer som t.ex Linjär regression, K-närmaste granne och Stöd Vector Machines

· Kfold-korsvalidering av modeller

· Python sjöfödd bibliotek för att visualisera korrelationsvärmekarta

· Pearson korrelation

· Funktionsplottning mot beroende utdata med Matplotlib.

· Plottning av verkligt värde med det förutsagda värdet.

· Root Mean Square Fel (RMSE).

· R-kvadratfel

Tack till alla för att ni läser min blogg och om ni gillar mitt innehåll och min förklaring, följ mig på medium och dela er feedback, vilket alltid kommer att hjälpa oss alla att förbättra vår kunskap.

Tack för att du läser!

Vivek Chaudhary


Aktieprisprediktionsmodell för Netflix publicerades ursprungligen i Towards AI — Multidisciplinary Science Journal on Medium, där människor fortsätter samtalet genom att lyfta fram och svara på den här historien.