{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra \nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport matplotlib.pyplot as plt\n%matplotlib inline\n#Birçok Jupyter defter kullanıcısı, defterin başında %matplotlib inline komutunu vermeyi tercih eder. Bu sayede ürettiğiniz matplotlib grafikleri defterin içine gömülür ve tam bir belge oluşturmanızı sağlar.\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nimport os\nprint(os.listdir(\"../input\")) #input dosya yolunun altındaki dosyaları listeliyor ve ekrana yazdırıyor.\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"pd.options.display.precision = 20 # virgülden sonra kaç basamak olucağının hassalık ayarı\ntrain = pd.read_csv(\"../input/train.csv\", nrows=10000000,\n                    dtype={'acoustic_data': np.int16, 'time_to_failure': np.float64}) \n#pandas ile csv dosyası okunuyor.\n#1 Dosya yolu\n#2 Kaç satır okunacak\n#3 Veri tipleri belirleniyor\n\n\ntrain.head(10) #ilk 10 datayı göster","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.rename({\"acoustic_data\": \"signal\", \"time_to_failure\": \"quaketime\"}, axis=\"columns\", inplace=True)\n#Columns doğrusundaki isimleri anlamlı isimlerle değiştiriyoruz.\ntrain.head() # ilk 5 satırı (default olarak 5) yazdırıyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.rcParams[\"figure.figsize\"] = (40,10) #asagidaki grafiğin ekrandaki boyutunu belirliyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\nplt.plot(train.quaketime.values[:20], train.signal.values[:20], 'ro') #Grafiği times ve signals listelerine göre çizdiriyoruz. Ilk 20 deger\n#r kırmızı demek. o ise yuvarlak demek. ro diyerek grafikte kırmızı noktalamalar yapıyoruz.\n\nplt.axis([train.quaketime.values[0]-0.0000000001, train.quaketime.values[20] + 0.0000000001, -10, 10]) \n#axisleri belirliyoruz. \n#X ekseni times dizisinin ilk verisinin 0.0000000001 eksiğinden times dizisinin son verisinin 0.0000000001 fazlası aralığında\n#Y ekseni -10 ve 10 aralığında\nplt.show() # ekrana çizdiriyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(train.describe()) #DF(DATAFRAME)'imizin belirli istatistiklerine bakıyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(train['signal'].unique())  # signal kolonundaki verilerin sadece benzersiz olanlarını yazdırıyoruz\nprint(type(train['signal'].unique()))  # Signal kolonundaki benzersiz verilerin tipine bakiyoruz. Sonrasinda ona gore islem yapmak icin.\nprint(np.sort(train['signal'].unique())) # Numpy array oldugunu bildigimiz datayi siraliyoruz. Dizinin taban ve tavan degerlerini gormek icin","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"meanDF = train.groupby(['signal'], as_index=False).mean() #sinyale göre gruplayıp ortalamasını alıyoruz. # Indexliyoruz\nmeanDF.head() # ekrana yazdırıyoruz.(default 5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"meanDF.describe() # ortalamalara gore istatisik bilgileri","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"meanDF.loc[meanDF['quaketime'] == 5.73671644094828270255].head() # Maximum ortalama degere sahip signal","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.rcParams[\"figure.figsize\"] = (40,15) #grafiğin ekrandaki boyutunu belirliyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(meanDF.signal.values[:200], meanDF.quaketime.values[:200], 'ro') #Grafiği times ve signals listelerine göre çizdiriyoruz. \n#r kırmızı demek. o ise yuvarlak demek. ro diyerek grafikte kırmızı noktalamalar yapıyoruz.\n#axisleri belirliyoruz. \nplt.xlabel(\"Signals\")\nplt.ylabel(\"Times\")\nplt.title(\"Ortalamaya gore degerler\")\nplt.show() # ekrana çizdiriyoruz.\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.rcParams[\"figure.figsize\"] = (200,40) #grafiğin ekrandaki boyutunu belirliyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(meanDF.signal.values[:200], meanDF.quaketime.values[:200], 'r') #Grafiği times ve signals listelerine göre çizdiriyoruz.  r kirmizi demek\n#axisleri isimlerimi belirliyoruz. \nplt.xlabel(\"Signals\")\nplt.ylabel(\"Times\")\nplt.title(\"Ortalamaya gore degerler\")\nplt.show() # ekrana çizdiriyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sampleMeanDF = meanDF.sample(200 , random_state=1) # verilerin icinden rastgele 200 tanesini aliyoruz # Random state =1 her seferinde ayni degerleri versin diye\nsampleMeanDF.sort_values(by=['signal'], inplace=True) # signale gore kucukten buyuge siraliyoruz\nsampleMeanDF.head(10) # ilk 10 degeri ekrana bastiriyoruz,","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.rcParams[\"figure.figsize\"] = (200,40) #grafiğin ekrandaki boyutunu belirliyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(sampleMeanDF.signal.values, sampleMeanDF.quaketime.values, 'ro') #Grafiği times ve signals listelerine göre çizdiriyoruz. \n#r kırmızı demek. o ise yuvarlak demek. ro diyerek grafikte kırmızı noktalamalar yapıyoruz.\n#axisleri belirliyoruz. \nplt.xlabel(\"Signals\")\nplt.ylabel(\"Times\")\nplt.title(\"Orneklenmis ortalamaya gore degerler\")\nplt.show() # ekrana çizdiriyoruz.\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.rcParams[\"figure.figsize\"] = (40,10) #grafiğin ekrandaki boyutunu belirliyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(sampleMeanDF.signal.values, sampleMeanDF.quaketime.values, 'r') #Grafiği times ve signals listelerine göre çizdiriyoruz. \n#r kırmızı demek. o ise yuvarlak demek. ro diyerek grafikte kırmızı noktalamalar yapıyoruz.\n#axisleri belirliyoruz. \nplt.xlabel(\"Signals\")\nplt.ylabel(\"Times\")\nplt.title(\"Orneklenmis ortalamaya gore degerler\")\nplt.show() # ekrana çizdiriyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sampleMeanDF.describe() # sample ornegin istatistik bilgisi","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"halfSampleDF = train.sample(frac=0.5, random_state=4) # verilerin icinden rastgele yarsini aliyoruz # https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sample.html\nhalfSampleDF.sort_values(by=['signal'], inplace=True) # signale gore kucukten buyuge siraliyoruz\nhalfSampleDF.head(10) # ilk 10 degeri ekrana bastiriyoruz,","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.rcParams[\"figure.figsize\"] = (200,40) #grafiğin ekrandaki boyutunu belirliyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(halfSampleDF.signal.values, halfSampleDF.quaketime.values, 'ro') #Grafiği times ve signals listelerine göre çizdiriyoruz. \n#r kırmızı demek. o ise yuvarlak demek. ro diyerek grafikte kırmızı noktalamalar yapıyoruz.\n#axisleri belirliyoruz. \nplt.xlabel(\"Signals\")\nplt.ylabel(\"Times\")\nplt.title(\"Orneklenmis ortalamaya gore degerler\")\nplt.show() # ekrana çizdiriyoruz.\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.rcParams[\"figure.figsize\"] = (40,10) #grafiğin ekrandaki boyutunu belirliyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(halfSampleDF.signal.values, halfSampleDF.quaketime.values, 'r') #Grafiği times ve signals listelerine göre çizdiriyoruz. \n#r kırmızı demek. o ise yuvarlak demek. ro diyerek grafikte kırmızı noktalamalar yapıyoruz.\n#axisleri belirliyoruz. \nplt.xlabel(\"Signals\")\nplt.ylabel(\"Times\")\nplt.title(\"Orneklenmis ortalamaya gore degerler\")\nplt.show() # ekrana çizdiriyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.preprocessing import PolynomialFeatures # ortalama degerlere gore Polynomial Regression\nfrom sklearn.linear_model import LinearRegression   # https://github.com/krishnaik06/Polynomial-Linear-Regression/blob/master/polynomial_regression.py\nX = meanDF.signal.values.reshape(2065,1)\ny = meanDF.quaketime.values.reshape(2065,1)\npoly_reg = PolynomialFeatures(degree = 4)\nX_poly = poly_reg.fit_transform(X)\npoly_reg.fit(X_poly, y)\nlin_reg_2 = LinearRegression()\nlin_reg_2.fit(X_poly, y)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.rcParams[\"figure.figsize\"] = (200,40) #grafiğin ekrandaki boyutunu belirliyoruz.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.scatter(X, y, color = 'red')\nplt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color = 'blue')\nplt.title('(Polynomial Regression)')\nplt.xlabel('signal')\nplt.ylabel('times')\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x_test = np.array([4,8]).reshape(2,1)\nlin_reg_2.predict(poly_reg.fit_transform(x_test))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sortedTrain = train.sort_values(by=['signal'],) # signale gore kucukten buyuge siraliyoruz\nsortedTrain.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sortedTrain.reset_index()\nsortedTrain.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X = sortedTrain.signal.values.reshape(10000000 ,1)     # Tum degerlere gore Polynomial Regression\ny = sortedTrain.quaketime.values.reshape(10000000 ,1)  # https://github.com/krishnaik06/Polynomial-Linear-Regression/blob/master/polynomial_regression.py\npoly_reg = PolynomialFeatures(degree = 4)\nX_poly = poly_reg.fit_transform(X)\npoly_reg.fit(X_poly, y)\nlin_reg_2 = LinearRegression()\nlin_reg_2.fit(X_poly, y)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x_test = np.array([4,8]).reshape(2,1)\nlin_reg_2.predict(poly_reg.fit_transform(x_test))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### TODO\n- Grafik cizdirme islemleri fonksiyona atilacak\n- sortedTrain datasi haric digerlerinin indexleri resetlenebilir. Resetli olmadigi icin grafikler hatali cikiyor olabilir.\n\n\n### Cikarimlar\n- Yuksek sureler genellikle datanin orta kisminda [-600,600] arasinda toplanmis diger kisimlar genellikle 0'a yakin"}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}