Python 83

[pyspark] Example of pyspark ML

앞선 글에서 pyspark Session을 설정하는 법과 csv 파일을 불러오는 방법에 대해서 다루어 보았다. 이번에는 pyspark에서 csv 파일을 불러와 간단한 ML(machine Learning)을 수행해보자. from pyspark.sql import SparkSession spark = SparkSession.builder.appName('missing').getOrCreate() training = spark.read.csv('dataset/test2.csv', header=True, inferSchema=True) training.printSchema() training.show(4) inferSchema = True 로 설정해줌으로써 age, Experience, Salary 변수가 in..

Python/Pyspark 2022.02.22

[pyspark] csv 파일 불러오기

파이썬에서 스파크를 활용하기 위해서는 기본적으로 Session을 지정해주어야 한다. 세션을 지정하고 빌드업을 해주면 다음과 같은 결과창이 나온다. from pyspark.sql import SparkSession spark = Sparksession.builder.appName('Practise').getOrCreate() spark 스파크의 버전과 내가 지정한 AppName도 같이 출력된다. df_pyspark = spark.read.option('header', 'true').option('inferSchema', 'true').csv('sample.csv') option에서 header : true를 지정해주면 csv 파일의 첫번째 행을 열이름으로 인식하고 가지고 온다. inferSchema는 각 ..

Python/Pyspark 2022.02.21

[pyspark] 스파크 시작하기

이전에 스파크를 설치해보았다. 지금은 스파크의 간단한 코드를 작성해볼 것이다. 환경은 파이썬 내에서 실행한다. 파이썬에서 스파크를 실행하기 위해서는 Session을 생성해주어야한다. 아래와 같이 Session을 생성하고 변수에 받을 수 있다. import pyspark from pyspark import SparkConf, SparkContext from pyspark.sql import SparkSession # Session 생성 spark = SparkSession.builder.appName('Basics').getOrCreate() # make DataFrame myRange = spark.range(1000).toDF('number') myRange는 0부터 999까지의 데이터를 받아 데이터 ..

Python/Pyspark 2022.02.20

[pyspark] 환경 설정

python에서 spark를 사용하기 위해서는 몇 가지 환경 설정이 필요하다. 1. JAVA 11 version $\uparrow$ 2. HADOOP 3 version $\uparrow$ 3. SPARK 3.2.1 4. PYTHON 3 version $\uparrow$ 위에서 언급한 4개의 버전을 제대로 설정해주어야만 사용이 가능하기 때문에 매우 중요하다. Spark3.2.1 버전을 사용할 것이기 때문에 JAVA는 11버전 이상을 다운받는 것이 좋다. 왜냐하면 Spark3.0.0 버전부터는 JAVA 11버전 부터 지원하기 때문이다. Hadoop도 마찬가지고 3버전 부터 지원하고 있으니 유의해서 다운받자. 파이썬의 경우 역시 3 버전부터 지원하니 유의하자. 3. Download Spark : spark-3..

Python/Pyspark 2022.02.17

[Python] logistic regression

로지스틱 회귀는 이진분류에서 사용되는 모델 중 흔히 쓰이는 모델이라고 보면 된다. 이론적인 부분을 공부하고 싶다면 여기를 눌러서 들어가면 볼 수 있다. 나는 임의로 데이터를 생성하여 분석을 진행했기 때문에 모델의 성능이 좋게 나오지는 않았다. 공식 데이터를 가지고 분석을 수행하면 보다 좋은 결과를 도출할 수 있을 것이다. def sigmoid(z): return 1/(1+np.exp(-z)) def f(x, w, b): return np.dot(x, w) + b def df(x, w, b): return x, 1 def binary_cross_entropy(z, t): return -(t*np.log(z) + (1-t)*np.log(1-z)).mean() 분석을 진행하기 앞서 로지스틱의 수식(sigmoi..

Python/Scikit-learn 2022.01.17

[Python] Monte Carlo algorithm

몬테카를로(Monte Carlo) 방법은 원하는 면적을 무한정 찍어서 그 면적을 구한다는 방식이라고 보면 된다. 정사각형 내에 원을 그리고 원의 면적을 구하고 싶다면 랜덤하게 점을 찍고 원 안에 들어간 점의 수와 전체 점을 찍은 수를 가지고 원 면적의 근삿값을 찾을 수 있을 것이다. 여기서는 몬테카를로 샘플링을 이용하여 원주율($pi$)을 근사해볼 생각이다. import matplotlib.pyplot as plt import numpy as np import math import time %matplotlib inline plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.family'] = 'NanumGothic' plt.rcParams['a..

[Python] numpy - view, copy

파이썬의 리스트의 경우 다른 객체에 할당받은 후 그 객체를 변경해도 변경되지 않지만, 넘파이 array의 경우 view(원본)을 나타내기 때문에 원본이 변경되지 않게 하거나 copy를 해주어야한다. li = [x for x in range(10)] arr_li = li[:] arr_li[0] = 100 print(li) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(arr_li) # [100, 1, 2, 3, 4, 5, 6, 7, 8, 9] 리스트의 경우 위와 같이 객체 0번을 받아서 변경을해도 변경이 되지 않는 것을 확인할 수 있다. 복사본의 경우 변경되어 있는 것이 보인다. arr = np.arange(10) arr_view = arr[:] arr_view[0] = 100 pr..

Python/Numpy 2022.01.14

[Python] 왜 넘파이를 사용해 ?

파이썬에서 벡터와 행렬 간 연산 속도는 엄청나게 느리다. 파이썬의 속도가 느리기 때문에 빠른 계산속도가 필요한 경우 C언어로 패키지를 만들어서 진행한다. 하지만 넘파이의 경우 파이썬의 연산 속도가 느린 부분을 일부 보완해줄 수 있는 엄청나게 좋은 패키지 중 하나이다. import numpy as np import time n = 150 a = np.random.rand(n, n) b = np.random.rand(n, n) c = np.zeros([n,n]) start = time.time() for i in range(n): for j in range(n): for k in range(n): c[i][j] = a[i][k] * b[k][j] print(time.time() - start) # 4.142..

Python/Numpy 2022.01.14

[Python] Class

딥러닝을 다루면 많이 접해볼 수 있는 클래스(Class)이다. 딥러닝을 할 때에는 기본적으로 클래스를 생성하여 함수를 받아오지만 머신러닝을 하거나 단순 코딩을 할 때에는 클래스를 정의하지 않고 사용했던 것 같다. 클래스를 만들고 내부에 함수와 변수, 인스턴스 등을 만들어 사용을 한다. Class 내부의 구조는 다음과 같다. 생성자(Constructor) : 클래스를 만들 때 자동으로 호출되는 특수한 함수라고 부르며, 파이썬에서는 생성자의 이름을 일반적으로 __init__으로 하고, 첫번째 인수로 객체 자신을 의미하는 self를 받아서 사용한다. 메소드(Method) : 클래스가 갖는 함수이며, 인스턴스를 조작하는 인스턴스 메소드, 클래스 전체를 처리하는 메소드, 인스턴스 없이도 작동하는 메소드 등이 존재..

Python 2022.01.14

[Python] Scikit-learn에서 cross validation 사용하기

교차검증법에는 다양한 방법이 존재한다. 일반적으로는 n개의 집단으로 나누어 교차검증을 하지만 LOOCV(Leave-One-Out Cross-Validation)의 경우에는 분할의 수를 데이터의 수 만큼 나누어 평가를 하게 된다. 만약 데이터가 100개라면 데이터를 100개로 나누고 99개는 학습, 나머지 하나로 평가를 하는 형태로 진행된다. LOOCV의 경우 데이터의 수가 적을 때 극한으로 성능을 끌어올리기 위해서 주로 사용된다. 사이킷-런(scikit-learn)에서는 교차검증에 대한 패키지를 제공해주고 있다. sklearn 2.0 버전 이하인 경우에는 아래와 같은 방식으로 호출을한다. from sklearn import cross_validation 하지만 그 이후 버전에서는 아래와 같이 cross_..

Python/Scikit-learn 2022.01.14
반응형