Customer analysis V1
customer analysis
https://github.com/flavves/machine-learning
“””
Created on Mon Jun 29 13:55:47 2020



# -*- coding: utf-8 -*-
"""
Created on Mon Jun 29 13:55:47 2020
@author: yaz?l?m
"""
import numpy as np
import pandas as pd
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVR
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn import model_selection
import matplotlib.pyplot as plt
from sklearn.linear_model import RidgeCV,Lasso,Ridge,LassoCV,ElasticNet,ElasticNetCV
from sklearn.linear_model import LassoCV
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
from sklearn.preprocessing import scale
from sklearn.preprocessing import StandardScaler
from sklearn import model_selection
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.neural_network import MLPRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn import neighbors
from sklearn.svm import SVR
from lightgbm import LGBMRegressor
from xgboost import XGBRegressor
from warnings import filterwarnings
filterwarnings('ignore')
import numpy as np
import pandas as pd
from sklearn.model_selection import cross_val_score
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn import model_selection
import matplotlib.pyplot as plt
from sklearn.linear_model import RidgeCV,Lasso,Ridge,LassoCV,ElasticNet,ElasticNetCV
from sklearn.linear_model import LassoCV
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import mean_squared_error, r2_score, accuracy_score
import matplotlib.pyplot as plt
from sklearn.preprocessing import scale
from sklearn.preprocessing import StandardScaler
from sklearn import model_selection
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.neural_network import MLPRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn import neighbors
from sklearn.svm import SVR,SVC
from lightgbm import LGBMRegressor
from xgboost import XGBRegressor
from warnings import filterwarnings
filterwarnings('ignore')
import pandas as pd
import csv
import pandas as pd
import numpy as np
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.model_selection import train_test_split
def anaMenu():
global menusecim
print("""
??????????????????????????????????????????????????????????????
1-ya? seçimini yap?n
2-seçilen ya? için genel sonuçlar? ekrana getirin
3-seçilen ya? için matematiksel sonuçlar? ekrana getirin
4-Önce bo? csv olu?tur ! ilk defa yapacaksan
5-Sonra csv verilerini güncelle ! ilk defa yapacaksan
6-Anlizli hata oranlar? seçilen ya? için
7-Analizli hata oranlar? Ana dosya için
8-Ç?k??
https://batuhanokmen.com/
?????????????????????????????????????????????????????????????""")
def istatistikler_Matematiksel():
#bo? k?s?mlar 0 yap?ld?
data = pd.read_csv(Secilen_yas,sep=",")
df = data["yas"].fillna(0)
df = data["au"].fillna(0)
df = data["soa1"].fillna(0)
df = data["soa2"].fillna(0)
df = data["soa3"].fillna(0)
df = data["at"].fillna(0)
#son al?nan ürünlerin birbiriyle alakas?
x = data[["soa1"]]
y=data[["soa2"]]
z=data[["soa3"]]
reg= LinearRegression()
model = reg.fit(x,y)
model_alakasi=model.score(x,y)
print("Son al?nan iki ürünün alakas?=%s"%model_alakasi)
son_alinan_urun_alakasi=model.predict([[1]])
#ürün alakal?r?n? bulabildim
if son_alinan_urun_alakasi > float(2):
print("Al?nan ürünlerin alakas? yok")
elif son_alinan_urun_alakasi < float(1.5):
print("Al?nan ürünler yar? yar?ya orant?l?")
elif son_alinan_urun_alakasi > float(1.3):
print("Son al?nan ürünler oldukça alakal?")
else:
print("Bir hata ile kar??la??ld?, yeniden dene!")
auort=np.mean(data["au"])
print("42 ya??ndaki üyeler ortalama %f ürün al?rlar" %auort)
#toplam al??veri? tutar?
atort=np.mean(data["at"])
print("Ortalama al??veri? turarlar? %f dir" %atort)
#her al??veri? ba??na harcad?klar? ortalama tutar
averisBasinaTurar=atort / auort
print("Her ortalama al??veri?te %d ? harcarlar" % averisBasinaTurar)
#beta de?erleri bulma
x = data[["soa1"]]
y=data[["soa2"]]
lm = LinearRegression()
model = lm.fit(x, y)
b0=model.intercept_
b1=model.coef_
print("Denklemimiz ' y = ß0 +ß1X+e dir ' ")
print("ß0 = %s"% b0)
print("ß1= %s" % b1)
#hata oranlar?
model.predict(x)
a=mean_squared_error(x,model.predict(x))
print("Al?nabilecek ortalama hata oran? %s" %a)
a2=np.sqrt(a)
print("Al?nabilecek net hata oran? %s" % a2)
#sinama yap?ma
x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.2,random_state=99)
x_train.head()
x_test.head()
lm= LinearRegression()
print("Deneme hatalar? oranlar?...")
#Hata alma 1. yontem
#e?itim hatalar?
model = lm.fit(x_train,y_train)
egitim_hata=np.sqrt(mean_squared_error(y_train,model.predict(x_train)))
print("E?itim hatas?: %s"%egitim_hata)
#test hatalar?
test_hatasi=np.sqrt(mean_squared_error(y_test,model.predict(x_test)))
print("Test hatalar? %s"%test_hatasi)
#k katl? cv yöntemi mse
print("K katl? cv yöntemi ile hata bulumu")
from sklearn.model_selection import cross_val_score
cross_val_score(model, x_train,y_train,cv=10 ,scoring="neg_mean_squared_error")
mse_cv=np.mean(-(cross_val_score(model, x_train,y_train,cv=10 ,scoring="neg_mean_squared_error")))
print("Test için cv için mse hatas?=%s"%mse_cv)
rmse_cv=np.sqrt(np.mean(-(cross_val_score(model, x_train,y_train,cv=10 ,scoring="neg_mean_squared_error"))))
print("Test için cv için rmse hatas?=%s"%rmse_cv)
karsilastir_cv=np.sqrt(np.mean(-(cross_val_score(model, x,y,cv=10 ,scoring="neg_mean_squared_error"))))
print("Test de?eri olmadan hata bulumu=%s"%karsilastir_cv)
def istatistikler():
data = pd.read_csv(Secilen_yas,sep=",")
df=pd.DataFrame(data)
belirleyici=data["soa1"]#.append(data["soa2"]).append(data["soa3"])
a=belirleyici.value_counts()
df.describe().T
print(a)
liste=list(a.items())
list1, list2 = zip(*liste)
birinci_tercih=list1[0]
kadar_almis=list2[0]
print("kullan?c? 1. tercih",birinci_tercih,"?u kadar alm??",kadar_almis)
bos_deger=int()
bilgisayar=int()
gunluk_giyim=int()
sanat=int()
tablet=int()
teknoloji=int()
spor=int()
oyun=int()
telefon=int()
birinci_kategori=str()
ikinci_kategori=str()
ucuncu_kategori=str()
sayac=-1
while 1:
if sayac <10:
birinci_kat=list1[0]
sayac=sayac+1
if sayac==birinci_kat:
if sayac==0:
birinci_kategori="bo? katagori"
elif birinci_kat==1:
birinci_kategori="bilgisayar"
elif birinci_kat==2:
birinci_kategori="telefon"
elif birinci_kat==3:
birinci_kategori="günlük giyim"
elif birinci_kat==4:
birinci_kategori="sanat"
elif birinci_kat==5:
birinci_kategori="tablet"
elif birinci_kat==6:
birinci_kategori="teknoloji"
elif birinci_kat==7:
birinci_kategori="spor"
elif birinci_kat==8:
birinci_kategori="oyun"
else:
print("ayarland?")
sayac=sayac+1
else:
print("bitti")
break
sayac=-1
while 1:
if sayac <10:
ikinci_kat=list1[1]
sayac=sayac+1
if sayac==ikinci_kat:
print(sayac)
if sayac==0:
ikinci_kategori="bo? katagori"
elif ikinci_kat==1:
ikinci_kategori="bilgisayar"
elif ikinci_kat==2:
ikinci_kategori="telefon"
elif ikinci_kat==3:
ikinci_kategori="günlük giyim"
elif ikinci_kat==4:
ikinci_kategori="sanat"
elif ikinci_kat==5:
ikinci_kategori="tablet"
elif ikinci_kat==6:
ikinci_kategori="teknoloji"
elif ikinci_kat==7:
ikinci_kategori="spor"
elif ikinci_kat==8:
ikinci_kategori="oyun"
else:
print("ayarland?")
sayac=sayac+1
else:
print("bitti")
break
sayac=-1
while 1:
if sayac <10:
ucuncu_kat=list1[2]
sayac=sayac+1
if sayac==ucuncu_kat:
if ucuncu_kat==0:
ucuncu_kategori="bo? katagori"
elif ucuncu_kat==1:
ucuncu_kategori="bilgisayar"
elif ucuncu_kat==2:
ucuncu_kategori="telefon"
elif ucuncu_kat==3:
ucuncu_kategori="günlük giyim"
elif ucuncu_kat==4:
ucuncu_kategori="sanat"
elif ucuncu_kat==5:
ucuncu_kategori="tablet"
elif ucuncu_kat==6:
ucuncu_kategori="teknoloji"
elif ucuncu_kat==7:
ucuncu_kategori="spor"
elif ucuncu_kat==8:
ucuncu_kategori="oyun"
else:
print("ayarland?")
sayac=sayac+1
else:
print("bitti")
break
print("Seçmi? oldu?unuz kullan?c? profili %s ya? gurubu" % yasSec )
print("Bu ya? gurubu için bir daha ki al??veri? tahminleri ?unlard?r...")
print("Alaca?? 1. ürün kategorisi=%s"%birinci_kategori)
print("Alaca?? 2. ürün kategorisi=%s"%ikinci_kategori)
print("Alaca?? 3. ürün kategorisi=%s"%ucuncu_kategori)
ort_au=np.mean(data["au"])
print("Ortalama alaca?? tek seferde ürün say?s?:%f"%ort_au)
ort_at=np.mean(data["at"])
print("Tek seferde yapaca?? al??veri? turar?:%f"%ort_at)
ort_a_basina_harcama=np.sum(data["at"])/ np.sum(data["au"])
print("Ortalama her ürüne: %f ? harcan?r"%ort_a_basina_harcama)
ort_harcama_basina_a=np.sum(data["au"])/ np.sum(data["at"])
print("her bir birim ürün al??veri?inde ortalama: %f ? harcan?r"%ort_harcama_basina_a)
toplamHarcama=np.sum(data["at"])
print("toplam harcanan tutar: %f?"%toplamHarcama)
toplamUrun=np.sum(data["au"])
print("toplam al?nan birim ürün: %f"%toplamUrun)
def Bo?_csv_olustur():
print("bo? sayfalar olu?turuluyor")
yas_sayaci=14
while 1:
if yas_sayaci <61:
dAd?=("yas_no%s.csv" % yas_sayaci)
data = pd.read_csv("ornekcsv.csv",sep=";")
with open(dAd?, 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow(["yas", "au", "soa1", "soa2", "soa3", "at"])
yas_sayaci=yas_sayaci+1
print("%s olu?turuldu" % yas_sayaci)
else:
break
def cvsVerileriniGir():
data = pd.read_csv("ornekcsv.csv",sep=";")
sayac=0
sayac1=1
yas_sayaci=1
df=pd.DataFrame(data)
a=df[0:1]
df=pd.DataFrame(data)
while 1:
print("ba?la")
data = pd.read_csv("ornekcsv.csv",sep=";")
belirleyici=int(a["yas"])
if (sayac1 == 1596):
break
elif (yas_sayaci > 63):
yas_sayaci=0
elif ( belirleyici == yas_sayaci):
dAd?=("yas_no%s.csv" % yas_sayaci)
with open(dAd?, 'a', newline='') as file:
writer = csv.writer(file)
a=df[sayac:sayac1]
yas=int(a["yas"])
au=int(a["au"])
soa1=int(a["soa1"])
soa2=int(a["soa2"])
soa3=int(a["soa3"])
at=int(a["at"])
writer.writerow([yas, au, soa1, soa2, soa3, at])
print("%s ya??nda ki ki?iler giriliyor" % yas_sayaci)
sayac=sayac+1
sayac1=sayac1+1
yas_sayaci=yas_sayaci+1
a=df[sayac:sayac1]
print("bitti")
def yasSecim():
global Secilen_yas
global yasSec
global yas
yasSec=int(input("ya? seçiniz:"))
Secilen_yas=("yas_no%s.csv"% yasSec)
def DahaAnalizliSonuclar():
df = pd.read_csv(Secilen_yas,sep=",")
df = df.dropna()
dms = pd.get_dummies(df[['soa1', 'soa2', 'soa3']])
def compML(df, y, alg):
#train-test ayrimi
y = df[y]
X_ = df.drop(['au', 'soa1', 'soa2', 'soa3'], axis=1).astype('float64')
X = pd.concat([X_, dms[['soa1', 'soa2', 'soa3']]], axis=1)
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.25,random_state=42)
#modelleme
model = alg().fit(X_train, y_train)
y_pred = model.predict(X_test)
RMSE = np.sqrt(mean_squared_error(y_test, y_pred))
model_ismi = alg.__name__
print(model_ismi, "Modeli Test Hatas?:",RMSE)
compML(df, "au", SVR)
models = [LGBMRegressor,
XGBRegressor,
GradientBoostingRegressor,
RandomForestRegressor,
DecisionTreeRegressor,
MLPRegressor,
KNeighborsRegressor,
SVR]
for i in models:
compML(df, "au", i)
def DahaAnalizliSonuclarAnaDosya():
df = pd.read_csv("ornekcsv.csv",sep=";")
df = df.dropna()
dms = pd.get_dummies(df[['soa1', 'soa2', 'soa3']])
def compML(df, y, alg):
#train-test ayrimi
y = df[y]
X_ = df.drop(['au', 'soa1', 'soa2', 'soa3'], axis=1).astype('float64')
X = pd.concat([X_, dms[['soa1', 'soa2', 'soa3']]], axis=1)
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.25,random_state=42)
#modelleme
model = alg().fit(X_train, y_train)
y_pred = model.predict(X_test)
RMSE = np.sqrt(mean_squared_error(y_test, y_pred))
model_ismi = alg.__name__
print(model_ismi, "Modeli Test Hatas?:",RMSE)
compML(df, "au", SVR)
models = [LGBMRegressor,
XGBRegressor,
GradientBoostingRegressor,
RandomForestRegressor,
DecisionTreeRegressor,
MLPRegressor,
KNeighborsRegressor,
SVR]
for i in models:
compML(df, "au", i)
while True:
anaMenu()
secim= int(input("seçim yap?n?z"))
if secim == 1:
yasSecim()
elif secim == 2:
istatistikler()
elif secim == 3:
istatistikler_Matematiksel()
elif secim == 4:
Bo?_csv_olustur()
elif secim == 5:
cvsVerileriniGir()
elif secim == 6:
DahaAnalizliSonuclar()
elif secim == 7:
DahaAnalizliSonuclarAnaDosya()
elif secim == 8:
break
else:
print("Bir hata olu?tu")
