기본 콘텐츠로 건너뛰기

8월, 2019의 게시물 표시

[ML] 결정트리(Decision Tree) 모델

Palindrome(회문) 결정하기

palindrome(회문) 순서를 역으로 해도 동일한 단어, 숫자, 문장을 나타내는 객체  첫번째와 마지막 원소가 동일    안쪽으로 하나씩 좁혔을 때 동일함 palindrome을 판단하기 위한 프로그램 def isPalindromeS(x):     target=str(x)     is_palindrome=True     for i in range(len(target)//2):         if target[i] != target[-1 -i]:             is_palindrome=False             break     return(is_palindrome) x=[121, "level", 12314] [isPalindromeS(i) for i in x] [True, True, False] 지정한 범위에서 palindrome를 발견 re=np.array([]) for i in range(10, 1001):     if isPalindromeS(i):         re=np.append(re, i) re array([ 11.,  22.,  33.,  44.,  55.,  66.,  77.,  88.,  99., 101., 111.,        121., 131., 141., 151., 161., 171., 181., 191., 202., 212., 222.,        232., 242., 252., 262., 272., 282., 292., 303., 313., 323., 333.,        343., 353., 363., 373., 383., 393., 404., 414., 424., 434., 444.,        454., 464., 474., 484., 494., 505., 515., 525., 535., 545., 555.,        565., 575., 585., 595., 606., 616., 626., 636., 646., 656.

솟수와 소인수 (Prime, Prime Factor)

솟수 1과 자신외의 값으로 나누어질 수 없는 수 def isPrimeS(x):     if x<=1:         return False     for i in range(2, x):         if x % i ==0:             return False     return True isPrimeS(7) True 위 프로그램을 사용하여 [1, 100] 사이의 솟수는 다음과 같습니다. re=np.array([]) for i in range(1, 101):     if isPrimeS(i)==True:         re=np.append(re, i) re array([ 2.,  3.,  5.,  7., 11., 13., 17., 19., 23., 29., 31., 37., 41.,        43., 47., 53., 59., 61., 67., 71., 73., 79., 83., 89., 97.]) 소인수  (Prime Factor) 소인수: 어떤 수를 얻기 위해 곱해지는 수들중 솟수들 6=2×3의 경우 2, 3은 6의 인수(factor) Prime Factorization(소인수 분해): 어떤수를 만들기 곱해진 수들 중에 소수들 12=2×6  12의 인수들은 2, 6으로 나타낼 수 있지만 6은 소수가 아니다. 즉, 별도의 인수를 가진다. 6=2×3 그러므로 12=2×2×3=2 2 *3 결과적으로 12의 소인수는 2, 3 입니다. 인수를 찾는 프로그램    factorS(x) 와 솟수인지를 검사하는 프로그램 isPrimeS() 를 사용하여 작성할 수 있습니다.  x=factorS(13195) re=np.array([]) for i in x:     if isPrimeS(i):         re=np.append(re, i) re array([ 5.,  7., 13., 29.]) 위 프로그램을 함수로 작성하면 다음과 같습니다. def primeFacto

피보나치 수열 생성(Fibonacci Sequence)

피보나치 수열은 앞의 두 수를 더하여 다음 수를 생성하는 수열로서 다음과 같이 코드를 작성할 수 있습니다. def fiboS(n):     #n=피보나치 수열의 갯수     fiboseq=np.array([1, 2])     for i in range(2, n+1):         fiboseq=np.append(fiboseq, fiboseq[i-2]+fiboseq[i-1])     return(fiboseq) fiboS(10) array([  1,   2,   3,   5,   8,  13,  21,  34,  55,  89, 144]) 위 결과는 numpy array로서 이들의 합을 위해서는 np객체.sum()을 적용합니다. fiboS(10).sum() 375 위 프로그램의 n은 수열의 갯수로서 정수입니다. 이것은 range() 함수의 인수이기 때문입니다. 정수형은 자릿수등의 한계가 존재하므로 얼마 이상의 값에서는 예기치 못한 값을 반환합니다. fiboS(50) array([          1,           2,           3,           5,           8,                 13,          21,          34,          55,          89,                ...          267914296,   433494437,   701408733,  1134903170,  1836311903,        -1323752223,   512559680,  -811192543,  -298632863, -1109825406,        -1408458269]) 그러므로 피보나치 수열을 생성할 경우 원소의 갯수가 아닌 그 합을 기준으로 하여 프로그램을 수정할 수 있습니다. 수정된 프로그램 역시 자료형의 크기에 한계가 있으므로 첫번째 프로그램보다 약간 개선된 결과를 보이지만 한계가 존재합니다. def fiboS(n):    

elementary function_sympy

Elementary function(초등함수) 대수함수와 지수 함수, 로그함수에 사칙연산 및 함수의 합성으로 만들수 있는 단변수 함수(univariate function)입니다. complex number(복소수) re(객체): 실수영역을 나타냄 im(객체): 허수영역을 나타냄 객체.as_real_imag(): (실수부분, 허수부분)의 쌍을 튜플로 반환 cojugate(객체): 켤레복소수를 반환 >>> type(E) #E=exp를 나타냄 sympy.core.numbers.Exp1 >>> 2*E 2*E >>> N(2*E) 5.43656365691809 >>> re(2*E) 2*E >>> type(I) #복소수의 허수 단위(numpy 등에서는  j로 나타냄)  sympy.core.numbers.ImaginaryUnit >>> eq=17+3*I >>> re(eq) #실수부분을 나타냄  17 >>> im(eq) #허수부분을 나타냄  3 >>> eq.as_real_imag() (17, 3) >>> conjugate(eq) 17 - 3*I sign() 식의 부호를 반환합니다. 식이 양수 : 1 식이 음수: -1 식이 0 : 0 복소수에서 허수부분의 부호는 다음과 같습니다. im(식) >0: I im(식) <0: -I >>> sign(-8) -1 >>> sign(0) 0 >>> sign(10) 1 >>> eq 17 + 3*I >>> sign(im(eq)) 1 Abs(): 절대값을 반환합니다.

Rolling Dice

import numpy as np mn = 1 mx = 7 ​ roll_again = 'yes' ​ while roll_again == "yes" or roll_again == "y" : print ( "Rolling the dice" ) print ( "The values are " ) print ( np . random . randint ( mn , mx )) roll_again = input ( "Roll the dices again?" ) Rolling the dice The values are 1 Roll the dices again?y Rolling the dice The values are 2 Roll the dices again?y Rolling the dice The values are 2 Roll the dices again?y Rolling the dice The values are 4 Roll the dices again?y Rolling the dice The values are 2 Roll the dices again?n