Veri Madenciliği

advertisement
VeriMadenciliği
ÇokfazlabilgidengizlikalmışörüntüleriortayaçıkarmasürecineVeriMadenciliğidenir.
istatistik+makineöğrenmesi+yapayzeka=verimadenciliği
Verimadenciliğisüreçleri
CRISP-DMSüreci
DataUnderstanding
Classification(Sınıflandırma):veribelirlikategorileregöresınıflaraayrılır.
Clustring(kümeleme):Belirlietiketleregörekümelemeyapıppromosyonmaillerininsadece
ilgilikişileregitmesinisağlar
AssocationRules(Birliktelikkuralları):Bunabakanbunlaradabaktıyapısıgibiveriler
arasındailişki.
Datapreparation
Bufazdadeğerlendirilecekverilerhazırlanır.Elimizdeboşgirilmişveriolmamasıgerekir.Boşolan
verilerediğerverilermedyanıveyaaritmetikortalamasıiledoldurulur.
Modelleme
İstatikselmakineöğrenmesiveyapayzekayöntemlerikullanılır.Buşekildeistatistikselolarak
karşılaştırmayapılır.
Evaluation
Modellemedengelenverilerdeğerlendirilir.
Deployment
Verilerinekrandagösterilmesiaşamasınadenir.
OLTP:BirveritabanındasadeceInsert-Update-Deleteyapılıyorisebuveritabanınadenir.
DatawareHouseOLTPveritabanındakiverilerinsadeceanalizedilecekkısmınıtutar.
Kullanılacakbazıkütüphaneler
Pandas:csvverileriüzerindehızlıişlemyapabiliyor.
NumPy:matrislerüzerindehızlıçalışıabiliyor
Scikit_Learn:Makineöğrenmesikütüphanesi
Pandas
VerilerinsatırvesütunlarıüzerindeişlemyapmayaizinverenDataFrameveSeriesözellikleri
vardır.
NumPy
GüçlübirN-boyutludizisağlar.
Karmaşıkfonksiyonlarbulunmaktadır.
C/C++Fortranentegrasyonubulunmaktadır.
KullanışlıForuierdönüşümüverastgelesayıyeterneklerivardır.
Scikit_Learn
Makineöğrenmesikütüphanesi
NumPyverileriniparametreolarakalır.
Pandaskullanarakverileriyüklenebilir.temizlenebilirveişlenebilir.
ilkuygulama
importpandasaspd
importnumpyasnp
#F9ilebulunulansatırveyataranmışolansatırlarıçalıştırabiliriz.
dataframe=pd.read_csv('Eskicalisanlar.csv')
#Dataframekısmındaiçeriğigörebiliriz.
dataframe.head()
#enüsttenitibarenbelirlisayıdakaydıgösterir.
#headparantezlerininiçerisinebirparametreverilirseoparametrekadar
#veriyigösterir.
dataframe.tail()
#sondanitibarenkayıtlarıgörmekiçinkullanılır.
dataframe.shape
#dataframeinkaçsatırvekaçsütundanoluştuğunubirtupleolarakverir.
dataframe.size
#dataframeiniçerisindekaçtanekayıtolduğunugösterir.
len(dataframe)
#satırsayısınıöğrenmemizisağlar.
dataframe.columns
#kolonisimlerinigörmemizisağlar.
dataframe['Hired']
#sadece'Hired'kolonubilgilerinigörmemizisağlar.
dataframe['Hired'][5]
#Hiredın5.indisindakiverigösterir.
dataframe[['Hired','Employed?']]
#birdenfazlasütunuaynıandaçekmemizisağlar.
dataframe.sort_values(['YearsExperience'])
#verileri'YearsExperience'önceliklisıralamamızısağlar.Varsayılanolarak
#küçüktenbüyüğesıralar.
egitimDuzeyi=dataframe['LevelofEducation'].value_counts()
#'LevelofEducation'kolonunasahipkişilerinverilerinibirleştirir.
egitimDuzeyi.plot(kind='bar')
#egitimDuzeyiverilerindengrafikoluşturmamızısağlar.
Soru
Yalnızca"PreviousEmployers"ve"Hired"sütunlarını,dataframeimizin5-10satırlarınısaçin.Bunu
yenibirDataframe'eatayınveverilerinbualtkümesindekiPreviousEmployerslarındağılımını
gösterenbirhistogramoluşturun.
VeriTipleri
Numerical
NümerikverilerDiscreteveContinuousolmaküzereikiyeayrılır.
DicreteData(Ayrıkveri)
Tamsayıtabanlıdır.Genelliklebirolayıngerçekleşmesayısıgibidurumlarifade
edilir.(Birmüşteriyıldakaçdefaalışverisyaptı.)
ContinuousData(SürekliVeri)
Butipverilerölçümlebelirlenmişdeğerlerdir.Gerektamsayıgereksevirgüllüsayılar
olabilir.Yanisayıdoğrusuüzerindekitümdeğerlerialabilirler.(Birokuldaki
öğrencilerinkilolarınedir?)
CategoricalData(KategorikVeri)
CinsiyetiIrk,Ürünkategorisivb.
OrdianData(OrdinalVeri)
Ordinalverilerdeyinekategorikveritüründendir.Fakatdeğerleriarasındasıralıbir
ilişkibulunmaktadır.(Filmratingleri,Müşteriüründeğerlendirmelerivb.)
ÖrnekSorular
Tankınızdanekadargazvar?(Continuous)
Hastanehizmetineverdiğinizpuan?1kötü,2orta,3iyi,4çokiyi(Ordinal)
Sınıtakiöğrencilerinyaşadıklarıiller(Categorical)
Sınıftakiöğrencilerinyaşları.(Discrete)
Alışverişmerkezindeharcananpara(Continuous)
Categorical
Mean,Medianvemode
Mean
verilerinaritmetikortalamsıdır.
importpandasaspd
importnumpyasnp
veri=[1,2,3,4,5,6,7,8,9,10]
np.mean(veri)
rastgeleveriüretmekistersekaşağıdakigibiyapabiliriz.
importpandasaspd
importnumpyasnp
importmathplotlib.pyplotasplot
gelirler=np.random.normal(3000,1500,10000)
#Normaldağılımasahiportalamadeğer,Standartsapma,10000değerüret
np.mean(gelirler)
plot.hist(gelirler,50)
#gelirlerverilerini50aralığaayırdemek.
Histogram
Gruplandırılmışbirveridağılımınınsütungrafiğiilegösteriminehistogramadıverilir.
Histogramoluşturma
1. Öncelikleverilerküçüktenbüyüğesıralanır.
2. Verigrubununaçıklığı(aralığı)bulunur.Açıklıkenbüyükveridenenküçükverininçıkarılması
ilebulunur.
3. Verilerinkaçgrubaayrılacağıbelirlenir.
4. Grupgenişliğibulunur.Açıklıkdeğeriningrupsayısınabölünmesiyleeldeedilensayıdan
büyükenküçükdoğalsayıgrupgenişliğiolarakalınır.
5. Verilerenküçükveridenbaşlayarakverigenişliğinegöregruplaraayrılır.
6. Oluşturulangruplarvegruplardakiverisayılarıtablohalindedüzenlenir.
7. Tabloyabakılılarakhistogramçizilir.
Örnekhistogramçizimi:
Veriler:
162,161,170,167,170,173,163,176,174,180,179,164,169,175,177,185,
169,172,180,175,168,163,172,172,169,173,170,171,168,166,167,170.
1)Öncelikleriverilerküçüktenbüyüğesıraladık.
161,162,163,163,164,166,167,167,168,168,169,169,169,170,170,170,
170,171,172,172,172,173,173,174,175,175,176,177,179,180,180,185
2)Verigrubununaçıklığınıbulduk.
185–161=24
3)Verilerinkaçgrubaayrılacağıbelirledik.Grupsayımız5olsun
4)Grupgenişliğinibulduk.24:5=4,8olupbusayıdanbüyükenküçükdoğalsayı5'tir.
Verilerigrupgenişliğinegöregruplaraayırdık.Verilerdekienküçüksayıdanbaşlayarakgrup
genişliğikadarsayıilerleyerekbirgrupyapıyoruz.Buradakisayılarınverilerarasındaolma
zorunluluğuyok.161-162-163-164-165gibi5taneveriyi161-165şeklindeyazıyoruz.Ohalde
gruplarımız:161-165,166-170,171-175,176-180,181-185
5)Gruplarımızıveogruplardakiverisayılarınıtablohalindedüzenledik.
Gruplar
Kişisayısı
161-165
5
166-170
12
171-175
9
176-180
5
181-185
1
Outlier(Aşırıdeğer)
Birverianaliziyapılırkenverilerinnormaldağılımauygunolduğudüşünülür.
Veriler,ortalama>=-3*Standartsapmaveortalama<=3*Standartsapmaaralığıiçerisinde
olmalıdır.BuaralığındışındabulunandeğerlerOutlierdeğerlerdir.Outlierdeğerlersilinmezse
doğrusonucaulaşılamaz.Buverilerinsilinmesigerekmektedir.
Mod
Birsayısaldeğeriçerisindeençoktekraredendeğeredenir.
fromscipyimportstats
yaslar=np.random.randint(18,high=90,size=500)
#Rastgeleyaşdeğerinesahip500tanedeğeroluşturur.
stats.mode(yaslar)
#verilenyaşlarınençoktekraredeninibulur.
Median
Birsayısaldeğersıralandığındaortadakisayıyıverir.Eğerstandartsapmaçokyükseksemedyan
çokönemlidir.Çünküortalamaistediğimizsonucuvermeyecektir.Buradamedyandeğerlerine
göreişlemyapılır.Buyğzdenveriyidüzgünincelemekgerekmektedir.
np.median(yaslar)
Download