In questo articolo, entreremo nel mondo emozionante delle startup, dove prevedere il profitto è fondamentale per il successo. Utilizzeremo un set di dati di 50 startup per analizzare le loro variabili e utilizzeremo il concetto di regressione lineare multipla per prevedere il profitto delle aziende startup. Immagina di poter prevedere con precisione il successo di una startup prima ancora che abbia iniziato a generare profitti.
In questo articolo, scoprirai come fare proprio questo! Attraverso l'analisi dei dati e l'utilizzo di tecniche avanzate di previsione, scoprirai come prevedere il successo delle startup e come utilizzare queste informazioni a tuo vantaggio. Non perdere questa occasione unica di entrare nel mondo delle startup e imparare a prevedere il loro successo!
Come funzionano le startup?
Le startup sono come un'avventura in un mondo sconosciuto, dove l'innovazione e il rischio sono all'ordine del giorno. Come funzionano esattamente? Bene, possiamo dire che la pipeline delle startup opera seguendo principi simili a quelli delle grandi multinazionali, ma con una differenza fondamentale: mentre le grandi aziende lavorano per migliorare prodotti già esistenti, le startup hanno come obiettivo quello di creare qualcosa di nuovo e di vantaggioso. Questo è ciò che rende le startup così emozionanti e imprevedibili, non sai mai cosa potresti scoprire o creare. Ti immagini di essere tra i primi a scoprire il prossimo successo della startup? Con questo articolo, scoprirai come funzionano le startup e come utilizzare queste informazioni a tuo vantaggio!
Come vengono finanziate le startup?
Le startup sono come una corsa contro il tempo, dove ogni giorno è una sfida per ottenere il finanziamento necessario per far decollare l'idea. Ma come vengono effettivamente finanziate queste aziende? Come ho accennato in precedenza, le startup non sono aziende stabili dal punto di vista economico, quindi non è facile trovare investitori disposti a scommettere su di loro. Ma non disperare! Ci sono molti modi per finanziare una startup, dai finanziamenti iniziali ai round di finanziamento successivi.
In poche parole, le startup cercano di trovare investitori che credono nella loro idea e che vogliono aiutarli a trasformarla in realtà, in cambio di una quota del futuro profitto.
In questo articolo, esploreremo i vari modi in cui le startup vengono finanziate e ti mostreremo come analizzare e trarre profitto dagli investimenti in startup.
Abbiamo bisogno di un modo in cui possiamo analizzare le nostre spese per le startup e quindi conoscerne un profitto!
In che modo questo modello può aiutare?
Il modello di apprendimento automatico può aiutare a prevedere i profitti delle startup analizzando il set di dati di 50 aziende e fornendo previsioni accurate in base alle spese sostenute. Questo strumento ci permette di avere una panoramica completa del mercato e di prendere decisioni informate per aumentare i profitti.
Informazioni sul set di dati delle 50 startup
Questo particolare set di dati contiene i dati di 50 startup a New York, California e Florida. Le funzionalità in questo set di dati sono la spesa in ricerca e sviluppo, la spesa amministrativa, la spesa di marketing e le funzionalità di localizzazione, mentre la variabile target è: profitto. – Fonte .
Spesa in ricerca e sviluppo: l'importo che stanno spendendo in ricerca e sviluppo.
Spesa amministrativa: l'importo che stanno spendendo per l'amministrazione.
Spesa di marketing: l'importo che stanno spendendo per le strategie di marketing.
Stato: a quale stato appartiene quella particolare startup.
Profitto: Quanto profitto sta facendo quella particolare startup.
Differenza tra regressione lineare e regressione lineare multipla
La principale differenza tra la regressione lineare e la regressione lineare multipla è che nella regressione lineare c'è solo una variabile indipendente mentre quando controlliamo, Regressione lineare multipla c'è più di una variabile indipendente.
Facciamo un esempio di entrambi gli scenari
1. Regressione lineare: quando vogliamo prevedere l'altezza di una persona in particolare solo dal peso di quella persona.
2. Regressione lineare multipla: se modifichiamo l'affermazione del problema di cui sopra solo un po', se abbiamo le caratteristiche come altezza, età e sesso della persona e dobbiamo prevedere il peso della persona, allora dobbiamo usare il concetto di regressione lineare multipla.
Prevedere i profitti delle startup utilizzando Python
Ti ricordiamo che adesso seguiranno una serie di codici e spiegazioni che potrai successivamente scaricare alla fine dell'articolo. Iniziamo. Scarica il dataset e crea un nuovo file o notebook python. Importiamo le librerie e carichiamo il datatset :
Alla fine dell'articolo puoi scaricare tutto il progetto completo.
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
dataset = pd.read_csv('startup.csv')
print(dataset.head())
Analisi numerica/statistica del dataset
dataset.describe()
Produzione:
Dimensioni del set di dati
print('Ci sono ',dataset.shape[0],'righe e ',dataset.shape[1],'colonne nel dataset.')
Produzione:
Ci sono 50 righe e 5 colonne nel set di dati.
Qui stiamo cercando di verificare se ci sono valori ripetuti nel set di dati o meno.
print('Ci sono',dataset.duplicated().sum(),' valori duplicati.')
Produzione:
Non sono presenti valori ripetuti nel set di dati.
Controlla i valori NULL
dataset.isnull().sum()
Produzione:
Spesa in ricerca e sviluppo 0
Amministrazione 0 Spesa in
marketing 0
Stato 0
Profitto 0
dtype: int64
Schema del set di dati
dataset.info()
Produzione:
RangeIndex: 50 voci, da 0 a 49 colonne di
dati (5 colonne in totale):
# Column Conteggio non nullo Dtype
--- ------ -------------- ---- -
0 Spesa R&S 50 float non nullo64
1 Amministrazione 50 float non nullo64
2 Spesa di marketing 50 float non nullo64
3 Stato 50 oggetto non nullo
4 Profitto 50 float64 non nullo
dtypes: float64(4), object(1)
memoria utilizzo: 2.1+ KB
Dalla funzione corr possiamo trovare la correlazione tra le colonne.
c = dataset.corr()
c
Produzione:
Possiamo vedere che tutte e tre le colonne hanno una relazione diretta con il profit , che è la nostra variabile target.
EDA sul set di dati dei profitti delle startup
Matrice di correlazione
sns.heatmap(c,annot=True,cmap='Blues')
plt.show()
Produzione:
Qui possiamo vedere la correlazione diretta con il profitto da come viene mostrata nella heatmap del grafico di correlazione.
Rilevamento dei valori anomali nella variabile target
outliers = ['Profit']
plt.rcParams['figure.figsize'] = [8,8]
sns.boxplot(data=dataset[outliers], orient="v", palette="Set2" , width=0.7) # orient = "v" : vertical boxplot ,
# orient = "h" : hotrizontal boxplot
plt.title("Outliers Variable Distribution")
plt.ylabel("Profit Range")
plt.xlabel("Continuous Variable")
plt.show()
Produzione:
Guardando il boxplot possiamo vedere i valori anomali in profit(target variable) , ma la quantità di dati non è molto (solo 50 voci) quindi non creerà un impatto molto negativo.
Rilevamento dei valori anomali a livello di stato
sns.boxplot(x = 'State', y = 'Profit', data = dataset)
plt.show()
Produzione:
1. Tutti i valori anomali presentati si trovano a New York.
2. Le startup situate in California possiamo vedere i massimi profitti e le massime perdite.
Istogramma sul profitto
sns.distplot(dataset['Profit'],bins=5,kde=True)
plt.show()
Produzione:
Il profitto medio (che è 100k) è il più frequente, cioè dovrebbe rientrare nella categoria del diagramma di distribuzione.
Trama di coppia o pairplot
sns.pairplot(set di dati)
plt.show()
Produzione:
1. Come possiamo vedere nel pair pot, Ricerca e sviluppo sono direttamente proporzionali all'investimento che possiamo fare.
2. La spesa di marketing sembra essere direttamente proporzionale (sebbene ci siano alcuni valori anomali) con il profitto.
3. Non esiste alcuna relazione tra la seconda colonna e il profitto, ovvero la nostra colonna di destinazione.
Sviluppo del modello per prevedere i profitti delle startup
# suddivisione del set di dati in variabili dipendenti e indipendenti
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
Codificatore di etichette
Label Encoder: codifica le etichette con valori compresi tra 0 e n_classes-1.
labelencoder = LabelEncoder()
X[:, 3] = labelencoder.fit_transform(X[:, 3])
X1 = pd.DataFrame(X)
X1.head()
Produzione:
Ora dobbiamo suddividere i dati in dati di addestramento e test
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(X,y,train_size=0.7,random_state=0)
x_train
Produzione:
array([[130298.13, 145530.06, 323876.68, 1],
[119943.24, 156547.42, 256512.92, 1],
[1000.23, 124153.04, 1903.93, 2],
[542.05, 51743.15, 0.0, 2],
[65605.48, 153032.06, 107138.38, 2],
[114523.61, 122616.84, 261776.23, 2],
[61994.48, 115641.28, 91131.24, 1],
[63408.86, 129219.61, 46085.25, 0],
[78013.11, 121597.55, 264346.06, 0],
[23640.93, 96189.63, 148001.11, 0],
[76253.86, 113867.3, 298664.47, 0],
[15505.73, 127382.3, 35534.17, 2],
[120542.52, 148718.95, 311613.29, 2],
[91992.39, 135495.07, 252664.93, 0],
[64664.71, 139553.16, 137962.62, 0],
[131876.9, 99814.71, 362861.36, 2],
[94657.16, 145077.58, 282574.31, 2],
[28754.33, 118546.05, 172795.67, 0],
[0,0, 11693.8, 4517.06
, 0].
[93863.75, 127320.38, 249839.44, 1],
[44069.95, 51283.14, 197029.42, 0],
[77044.01, 99281.34, 140574.81, 2],
[134615.46, 147198.87, 127716.82, 0],
[67532.53, 105751.03, 304768.73, 1],
[28663.76, 127056.21, 201126.82, 1],
[78389.47, 153773.43, 299737.29, 2],
[86419.7, 153514.11, 0.0, 2],
[123334.88, 108679.17, 304981.62, 0],
[38558.51, 82982.09, 174999.3, 0],
[1315.46, 115816.21, 297114.46, 1],
[144372.41, 118671.85, 383199.62, 2],
[165349.2, 136897.8, 471784.1, 2],
[0.0, 135426.92, 0.0, 0],
[22177.74, 154806.14, 28334.72, 0]] , dtype=oggetto)
Ora definiamo il modello
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x_train,y_train)
print('Modello allenato con successo')
Produzione:
Il modello è stato addestrato correttamente
Testare il modello utilizzando la funzione di previsione
y_pred = model.predict(x_test)
y_pred
Produzione:
array([104055.1842384 , 132557.60289702, 133633.01284474, 72336.28081054,
179658.27210893, 114689.63133397, 66514.82249033, 98461.69321326,
114294.70487032, 169090.51127461, 96281.907934 , 88108.30057881,
110687.1172322 , 90536.34203081, 127785.3793861 ])
Punteggi dei test
testing_data_model_score = model.score(x_test, y_test)
print("Model Score/Performance sui Testing data",testing_data_model_score)
training_data_model_score = model.score(x_train, y_train)
print("Model Score/Performance sui Training data",training_data_model_score)
Produzione:
Model Score/Performance sui Testing data 0.9355139722149947
Model Score/Performance sui Training data 0.9515496105627431
Confronto tra valori previsti e valori effettivi
df = pd.DataFrame(data={'Predicted value':y_pred.flatten(),'Actual Value':y_test.flatten()})
df
Produzione:
Come possiamo vedere che il valore previsto è vicino ai valori effettivi cioè quello presente nel set di test, quindi possiamo usare questo modello per la previsione . Ma prima, dobbiamo calcolare quanto viene generato l'errore.
Valutazione del modello
1. Punteggio R2. È uno degli approcci statistici con cui possiamo trovare la varianza o la diffusione dei dati target e feature.
from sklearn.metrics import r2_score
r2Score = r2_score(y_pred, y_test)
print("R2 score of model is :" ,r2Score*100)
Produzione:
Il punteggio R2 del modello è: 93.39448007716636
2. MSE: Usando questo approccio possiamo scoprire quanto la linea di best fit della regressione è vicina a tutto il residuo.
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_pred, y_test)
print("Mean Squarred Error is :" ,mse*100)
Produzione:
L'errore quadratico medio è: 6224496238,94644
3. RMSE: Questo è simile all'approccio dell'errore quadratico medio (MSE), l'unica differenza è che qui troviamo la radice dell'errore quadratico medio, cioè la radice dell'errore quadratico medio è uguale all'errore quadratico medio. Il motivo per trovare la radice è trovare il residuo più vicino ai valori trovati dall'errore quadratico medio.
rmse = np.sqrt(mean_squared_error(y_pred, y_test))
print("Root Mean Squarred Error is : ",rmse*100)
Produzione:
L'errore quadratico medio della radice è: 788954.7666974603
4. MAE:Errore assoluto medio . Utilizzando questo approccio possiamo trovare la differenza tra i valori effettivi ei valori previsti, ma tale differenza è assoluta, ovvero la differenza è positiva.
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_pred,y_test)
print("Mean Absolute Error is :" ,mae)
Produzione:
L'errore assoluto medio è: 6503.5
Conclusione sulla previsione dei profitti delle startup
Quindi, l'errore assoluto medio è 6503.5 . Pertanto il nostro valore previsto può essere 6503 unità in più o in meno rispetto al valore effettivo.
Ok, non male !
Grazie per aver letto il mio articolo
Spero che vi piaccia questo apprendimento passo dopo passo della previsione dei profitti della startup utilizzando l'apprendimento automatico. Buon apprendimento!
Comments