NumPy 최소 제곱

Numpy Choeso Jegob



오늘은 선형방정식의 최소제곱법과 제공된 데이터셋의 회귀선에 가장 잘 맞는 최소제곱법을 구현하는 방법에 대해 알아보겠습니다. 하지만 그 전에 NumPy에 대한 기본 지식을 습득합시다. NumPy는 이러한 행렬/배열에서 수행될 수 있는 다양한 복잡한 수치 연산과 함께 다차원 배열 및 행렬에 대한 서비스를 제공하는 최고의 Python 수학적 패키지 중 하나입니다.

Python lstsq()의 방법 중 하나는 이 방정식에 가장 잘 맞는 알려진 선형 방정식 ax=b의 회귀선을 찾는 데 사용됩니다. 즉, 데이터에 하나가 있는 것으로 표시되는 경우 x 및 y 지점 사이의 관계를 적절하게 표시하는 선을 결정해야 합니다. 두 점 사이의 선은 이 방정식, ax=b를 통해 최소 제곱을 찾는 데 사용될 때 회귀선으로 알려져 있습니다.

통사론:

linalg.lstsq() 함수의 구현 스타일을 배우기 시작합시다. 먼저 Python에서 사용하는 라이브러리 이름인 'numpy'를 작성합니다. 그런 다음 linalg() 함수를 연결하고 lstsq() 함수를 연결합니다. linalg() 함수는 선형 대수학을 의미합니다. 선형 대수식이므로 항상 lstsq() 함수와 함께 사용됩니다. 그런 다음 함수 괄호 안에 인수를 전달합니다.









매개변수:

linalg.lstsq() 함수의 매개변수를 이해합시다.



포인트1: 계수 행렬입니다.





포인트2: 이 행렬 또는 배열에는 종속 변수가 포함되어 있습니다.

rcond: 데이터 유형은 float입니다. rcond 비율은 point_1의 더 작은 특이값에 대한 컷오프 역할을 합니다. 특이값이 rcond x point_1의 가장 큰 특이 요소보다 작으면 순위를 결정할 때 0으로 간주됩니다.



반환 값:

그 대가로 우리는 방정식 ax=b에서 알려진 변수 x의 최소 제곱을 얻습니다.

예 1:

Python 라이브러리 NumPy의 최소 자승법에 대한 첫 번째 예를 구현해 보겠습니다. 먼저 Python 컴파일러가 필요하므로 코드를 작성할 수 있습니다. 컴파일러를 엽니다. NumPy의 함수 중 하나인 lstsq() 함수를 사용하고 있기 때문에 NumPy 라이브러리도 설치해야 합니다. 그런 다음 NumPy 패키지를 가져와야 합니다. 먼저 컴파일러에게 패키지를 가져올 것임을 알리는 'import' 키워드를 작성합니다. 그런 다음 'numpy'라는 함수에서 사용할 패키지 이름을 작성해야 합니다. 그리고 많은 프로그래머가 이 접근 방식을 사용하기 때문에 NumPy 'np'의 대체 이름도 작성합니다. 이것은 좋은 프로그래밍 접근 방식이며 시간을 절약합니다.

패키지를 가져온 후 수행하려는 실제 코드 줄을 작성하기 시작합니다. 사용자가 print() 문을 사용하여 예제에서 수행하는 작업을 쉽게 이해할 수 있도록 먼저 메시지를 인쇄합니다. array() 함수를 사용하여 1차원 배열 'A'를 만든 다음 print() 문을 호출하여 인쇄합니다. 그런 다음 array() 함수를 사용하여 또 다른 1차원 배열 'B'를 만들고 print() 함수를 사용하여 인쇄합니다.

수입 numpy ~처럼 예를 들어

인쇄 ( 'NumPy에서 최소제곱법 구현: ' )

= 예를 들어 정렬 ( [ 1 , , 1 , 1 , 1 , , , 1 , 1 ] )

인쇄 ( ' \N 어레이 A는 ' , )

= 예를 들어 정렬 ( [ 4 , , 5 , 4 , , , 6 , , ] )

인쇄 ( ' \N 어레이 B는 ' , )

엑스 = 예를 들어 아마씨 . lsq ( 예를 들어 대 스택 ( [ , 예를 들어 ( ( ) ) ] ) . , , rcond = 없음 ) [ 0 ]

인쇄 ( ' \N 최소 제곱은 ' , 엑스 )

점 A와 B를 모두 생성한 후 lstsq() 함수를 구현합니다. 그러나 먼저 vstack() 함수를 사용하여 'A'의 요소를 순서대로 쌓습니다. 그런 다음 배열 'A'를 전치합니다. 그런 다음 vstack() 함수를 lstsq() 함수의 첫 번째 인수로 전달합니다. 두 번째 인수는 'B' 배열이고 세 번째 인수는 'rcond'로 rcond 값을 'none'으로 설정합니다. 그런 다음 전체 함수를 'x'라는 이름의 다른 배열에 저장합니다. 이 배열은 알려진 변수 선형 방정식 ax=b임을 나타냅니다. 그런 다음 결과를 표시하므로 이에 대해 print() 문을 사용하고 'x' 배열을 전달합니다.

예 2:

이제 NumPy 최소 제곱의 또 다른 예를 구현해 보겠습니다. 우리는 항상 NumPy인 프로그램에서 사용하는 라이브러리를 먼저 가져옵니다. 먼저 프로그램에서 패키지를 가져오기 위해 '가져오기' 키워드를 작성합니다. 우리는 또한 'numpy'인 패키지 이름과 그의 별칭 'np'를 작성합니다. 그런 다음 print() 메서드를 호출하여 사용자를 더 잘 이해할 수 있도록 최소 제곱의 다시 표시할 수 있는 메시지를 표시할 수 있습니다.

그런 다음 배열 이름 'x_axis'를 만들고 range() 함수를 사용하여 배열을 저장합니다. 그런 다음 print() 메서드를 사용하여 인쇄합니다. 그런 다음 'y_axis'라는 또 다른 배열 이름을 만들고 다음 그림에서 만든 배열을 저장합니다.

두 배열을 모두 생성한 후 x_axis 배열에 ones() 메서드를 구현하고 'array_a'라는 다른 배열에 저장합니다. 그런 다음 이 배열도 인쇄합니다. 'arg_reg_line'이라는 또 다른 배열을 만들고 linalg.lstsq() 함수를 구현합니다. 그런 다음 매개변수를 이 함수에 전달하여 두 배열 또는 점 사이의 최소 제곱을 얻을 수 있습니다. 첫 번째 매개변수는 array_a의 전치를 취한다는 것입니다. 두 번째 매개변수는 y_axis인 두 번째 점입니다. 그런 다음 'none' 값을 포함하는 'rcond'가 있습니다. 그런 다음 print() 메서드를 사용하여 배열을 표시합니다.

수입 numpy ~처럼 예를 들어

인쇄 ( 'linalg.lstsq() 함수의 구현: ' )

x_축 = 예를 들어 정리하다 ( 0 , 10 )

인쇄 ( ' \N x 축의 값은 다음과 같습니다. ' , x_축 )

y_축 = [ 10.3 , 10.5 , 열하나 , 11.5 , 13.2 , 13.9 , 14 , 15.5 , 16.6 , 17 ]

인쇄 ( ' \N y축의 값은 다음과 같습니다. , y_축 )

array_a = 예를 들어 정렬 ( [ x_축 , 예를 들어 ( 10 ) ] )

인쇄 ( ' \N 배열은 다음과 같습니다. \N ' , array_a )

arg_reg_line = 예를 들어 아마씨 . lsq ( 배열_아. , y_축 , rcond = 없음 ) [ 0 ]

인쇄 ( ' \N 회귀선의 매개변수는 다음과 같습니다. , arg_reg_line )

reg_line = arg_reg_line [ 0 ] * x_축 + arg_reg_line [ 1 ]

수입 매트플롯립. 파이플롯 ~처럼 제발

plt. 구성 ( x_축 , reg_line , '아르 자형-' )

plt. 구성 ( x_축 , y_축 , '영형' )

plt. 제목 ( '선형 회귀선' )

plt. xlabel ( 'X축' )

plt. ylabel ( 'Y축' )

plt. 보여 주다 ( )

다음은 사전 구현된 예제의 출력입니다.

그래프를 그리는 데 사용되는 'matplotlib' 패키지인 NumPy의 다른 패키지를 가져옵니다. 그런 다음 x_axis 값과 y_axis_values를 플로팅합니다. 다음으로 그래프의 제목과 레이블을 설정합니다. 마지막으로 show() 메서드를 사용하여 그래프를 표시합니다.

다음은 주어진 예제의 원하는 그래프입니다.

결론

이 기사에서 우리는 최소 제곱이 무엇인지와 선형 방정식 ax=b를 사용하여 알려지지 않은 변수 x의 linalg.lstsq()를 얻는 방법을 배웠습니다. NumPy의 여러 기능을 사용하여 최소 제곱을 찾고 사용자를 더 잘 이해할 수 있도록 자세한 설명과 함께 몇 가지 예를 구현했습니다.