<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Crocus</title>
    <link>https://programbasic.tistory.com/</link>
    <description>Beginner와 Developer사이의 Crocus</description>
    <language>ko</language>
    <pubDate>Mon, 18 May 2026 11:01:12 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>가누</managingEditor>
    <image>
      <title>Crocus</title>
      <url>https://tistory1.daumcdn.net/tistory/1636210/attach/9dfb97c85c3f448182ee340c43d22883</url>
      <link>https://programbasic.tistory.com</link>
    </image>
    <item>
      <title>지수분포 개념 및 예제</title>
      <link>https://programbasic.tistory.com/1915</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 지수 분포란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수 분포는 일정 시간 동안 독립적으로 발생하는 사건의 횟수가 포아송 분포를 따를 때, 다음 사건이 발생하기까지의 대기 시간을 모델링하는 연속 확률 분포입니다.&lt;br /&gt;이 분포는 양의 값을 가지며, 시간이 지날수록 사건이 발생할 확률이 줄어듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수 분포는 포아송 분포와 밀접한 관련이 있습니다.&lt;br /&gt;포아송 분포가 일정 시간 동안 발생하는 사건의 횟수를 모델링한다면, 지수 분포는 연속적인 두 사건 사이의 대기 시간을 모델링합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 지수 분포의 특성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수 분포의 주요 특성은 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평균은 &lt;b&gt;1/&amp;lambda;&lt;/b&gt; 이고, 분산은 &lt;b&gt;1/(&amp;lambda;^2)&lt;/b&gt; 입니다.&lt;/li&gt;
&lt;li&gt;시간이 지날수록 사건 발생 확률이 감소합니다.&lt;/li&gt;
&lt;li&gt;사건의 발생 횟수가 많아질수록 그 사건이 다시 발생할 확률은 낮아집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 실생활 예시&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수 분포는 다음과 같은 상황에서 사용될 수 있습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;버스 정류장에서 버스를 기다리는 시간&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평균 15분마다 한 대씩 오는 버스 정류장에서, 다음 버스가 도착하기까지의 대기 시간을 예측할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고장 나기 전의 기계 부품 사용 시간&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 기계 부품이 평균적으로 1000시간 사용 후에 고장 난다고 할 때, 다음 고장까지의 사용 시간을 예측할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;콜센터에 걸려오는 다음 전화까지의 시간&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콜센터에서 평균적으로 10분에 한 번씩 전화가 걸려온다면, 다음 전화가 걸려오기까지의 대기 시간을 예측할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 지수 분포의 구현&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;scipy 라이브러리의 e 클래스를 이용할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import scipy.stats as stats

# 지수 분포 설정
lambda_ = 0.5  # 사건의 평균 발생률 (예: 평균 2시간마다 1건의 사건 발생)
exp_dist = stats.expon(scale=1/lambda_)

# 확률 및 기대값, 분산 계산
print(f&quot;P(X&amp;lt;=1): {exp_dist.cdf(1)}&quot;)  # 1시간 이내에 사건이 발생할 확률
print(f&quot;기대값: {exp_dist.mean()}&quot;)  # 기대값
print(f&quot;분산: {exp_dist.var()}&quot;)  # 분산&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째로 버스 정류장에서 버스를 기다리는 시간을 지수 분포를 이용해 구현해 보겠습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import scipy.stats as stats

# 지수 분포 설정
lambda_ = 1 / 15  # 평균 15분마다 버스가 도착
exp_dist = stats.expon(scale=1/lambda_)

# 대기 시간 확률 계산
print(f&quot;P(X&amp;lt;=5): {exp_dist.cdf(5)}&quot;)  # 5분 이내에 버스가 도착할 확률
print(f&quot;P(5&amp;lt;X&amp;lt;=10): {exp_dist.cdf(10) - exp_dist.cdf(5)}&quot;)  # 5분에서 10분 사이에 버스가 도착할 확률
print(f&quot;기대값: {exp_dist.mean()}분&quot;)  # 평균 대기 시간
print(f&quot;분산: {exp_dist.var()}&quot;)  # 분산&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Applied/DataScience</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1915</guid>
      <comments>https://programbasic.tistory.com/1915#entry1915comment</comments>
      <pubDate>Wed, 6 Mar 2024 17:04:04 +0900</pubDate>
    </item>
    <item>
      <title>포아송 분포 개념 및 실생활 예제와 코드</title>
      <link>https://programbasic.tistory.com/1914</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 포아송 분포란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포아송 분포는 일정한 단위 시간, 거리, 면적 등에서 랜덤하게 발생하는 사건의 분포를 나타내는 이산 확률 분포입니다. 이 분포는 특정 구간에서 일어나는 독립적인 사건의 수를 예측하는 데 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 포아송 분포는 일상생활에서 자주 발생하는 랜덤 사건들을 모델링하는 데 유용합니다. 은행에서의 고객 방문 수, 콜센터로의 전화 통화 수 등을 예측하는 데 이 분포를 활용할 수 있습니다. 이러한 이해는 데이터 분석 및 의사결정 과정에서 매우 중요한 역할을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 포아송 분포의 적용 조건&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포아송 분포를 적용하기 위한 조건은 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구간마다 발생하는 사건은 서로 독립적입니다.&lt;/li&gt;
&lt;li&gt;사건의 발생 확률은 구간의 길이에 비례합니다.&lt;/li&gt;
&lt;li&gt;아주 작은 구간에서 사건이 발생할 확률은 무시할 만합니다.&lt;/li&gt;
&lt;li&gt;구간마다 확률 분포는 일정합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 포아송 분포의 활용 예시&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실생활에서 포아송 분포는 다양하게 활용됩니다. 예를 들면:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;은행 방문 고객 수 예측&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예를 들어, 한 은행 지점에 평균적으로 1시간에 10명의 고객이 방문한다고 합시다. 이 정보를 바탕으로, 특정 시간대에 15명 이상의 고객이 방문할 확률을 계산할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;콜센터 전화 통화 수&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콜센터에 하루 평균 300통의 전화가 걸려온다고 가정해 봅시다. 이를 바탕으로, 어떤 날에 350통 이상의 전화가 걸려올 확률을 계산할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;도서관의 도서 대출 건수&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평일 하루 평균 200권의 도서가 대출된다고 가정할 때, 특정 평일에 250권 이상 대출될 확률을 예측할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공장의 불량품 발생 건수&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한 공장에서 하루 평균 5개의 불량품이 발생한다고 할 때, 어느 날 10개 이상의 불량품이 발생할 확률을 계산할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 포아송 분포의 특징&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포아송 분포에서 사건 발생 빈도, 평균, 분산은 모두 &amp;lambda;(람다)로 표현됩니다. &amp;lambda; 값이 클수록 분포는 정규 분포에 가까워집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 파이썬을 이용한 포아송 분포의 구현&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬을 사용하여 포아송 분포를 시뮬레이션해 보겠습니다. scipy 라이브러리의 poisson 클래스를 활용할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import scipy.stats as stats

# 포아송 분포 계산
lambda_ = 3  # 예를 들어, 1시간 동안 평균 3건의 사건이 발생한다고 가정
poisson_dist = stats.poisson(lambda_)

# 확률 및 기대값, 분산 계산
print(f&quot;P(X=5): {poisson_dist.pmf(5)}&quot;)  # 5건의 사건이 발생할 확률
print(f&quot;기대값: {poisson_dist.mean()}&quot;)  # 기대값
print(f&quot;분산: {poisson_dist.var()}&quot;)  # 분산&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Applied/DataScience</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1914</guid>
      <comments>https://programbasic.tistory.com/1914#entry1914comment</comments>
      <pubDate>Mon, 4 Mar 2024 16:46:20 +0900</pubDate>
    </item>
    <item>
      <title>이항분포 개념 및 코드 예제</title>
      <link>https://programbasic.tistory.com/1913</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 이항분포&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이항분포는 베르누이 실험을 n번 반복했을 때의 확률분포입니다. 베르누이 실험은 두 가지 결과(성공 또는 실패)만을 가지는 실험입니다. 이항분포는 성공의 확률을 p, 실패의 확률을 q(=1-p)라 할 때, n번의 시행 중 x번 성공할 확률을 나타내며, 수학적으로는 P(X = x) = nCx * p^x * q^(n-x) = n!/(n-x)!x! * p^x * (1-p)^(n-x)로 표현됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 이항분포의 조건&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이항분포는 다음과 같은 조건을 만족합니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실험은 n번 반복됩니다.&lt;/li&gt;
&lt;li&gt;각 시행은 상호 배타적인 두 결과(성공 또는 실패)를 갖습니다.&lt;/li&gt;
&lt;li&gt;각 시행은 독립적입니다.&lt;/li&gt;
&lt;li&gt;각 시행에서의 성공 확률 p는 일정합니다.&lt;/li&gt;
&lt;li&gt;확률변수 X는 n번의 시행 중 성공 횟수를 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 이항분포의 특징&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이항분포의 형태는 시행 횟수 n과 성공 확률 p에 따라 다릅니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;p가 0.5에 가까우면, n의 크기에 관계없이 좌우대칭 종모양 형태를 나타냅니다.&lt;/li&gt;
&lt;li&gt;n이 크면, p의 크기에 관계없이 좌우대칭을 이룹니다.&lt;/li&gt;
&lt;li&gt;p &amp;lt; 0.5이고 n이 작으면 오른쪽 꼬리분포를 나타냅니다.&lt;/li&gt;
&lt;li&gt;p &amp;gt; 0.5이고 n이 작으면 왼쪽 꼬리분포를 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 이항분포의 기대값과 분산&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기대값은 &lt;b&gt;&lt;i&gt;&amp;mu; = np&lt;/i&gt;&lt;/b&gt;이고,&lt;br /&gt;분산은 &lt;b&gt;&lt;i&gt;&amp;delta;^2 = npq = np(1-p)&lt;/i&gt;&lt;/b&gt; 입니다.&lt;br /&gt;표준편차는 &lt;b&gt;&lt;i&gt;&amp;delta; = sqrt(np(1-p))&lt;/i&gt;&lt;/b&gt; 로 계산됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 실생활 예제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 공장에서 생산되는 전구 중 5%가 불량품일 때, 100개의 전구를 무작위로 선택했을 때 불량품의 개수를 예측할 수 있습니다. 여기서 n=100, p=0.05, q=0.95입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;i&gt;6. 코드 예제&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬을 사용하여 이항분포를 구현해 보겠습니다.&lt;br /&gt;scipy 라이브러리의 binom 클래스를 사용하여 이항분포를 계산할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import scipy.stats as stats

# 이항분포 계산
n, p = 100, 0.05  # n은 시행 횟수, p는 성공 확률
binom_dist = stats.binom(n, p)

# 확률 및 기대값, 분산 계산
print(f&quot;P(X=10): {binom_dist.pmf(10)}&quot;)  # 10개가 불량품일 확률
print(f&quot;기대값: {binom_dist.mean()}&quot;)  # 기대값
print(f&quot;분산: {binom_dist.var()}&quot;)  # 분산&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Applied/DataScience</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1913</guid>
      <comments>https://programbasic.tistory.com/1913#entry1913comment</comments>
      <pubDate>Sun, 3 Mar 2024 16:39:07 +0900</pubDate>
    </item>
    <item>
      <title>확률 질량함수와 함률 밀도함수 개념 및 예제</title>
      <link>https://programbasic.tistory.com/1912</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 확률질량함수(PMF)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이산 확률변수의 경우, 확률질량함수(PMF)를 사용합니다. PMF는 확률변수가 특정 값을 가질 확률을 나타냅니다. PMF의 특징은 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 실수 x에 대해 f(x) &amp;ge; 0입니다.&lt;/li&gt;
&lt;li&gt;모든 가능한 x에 대한 f(x)의 합은 1입니다.&lt;/li&gt;
&lt;li&gt;누적분포함수는 F(x)로 표기하며, 이는 주어진 값까지의 확률의 누적을 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 확률질량함수 (PMF) 예제 및 코드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예제&lt;/b&gt;: 주사위 던지기를 생각해보겠습니다. 주사위의 각 면이 나올 확률은 동일하므로, 확률질량함수는 각 면(1부터 6까지)이 나올 확률을 1/6로 나타냅니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 주사위 던지기 확률질량함수
def dice_pmf(x):
    if x in range(1, 7):
        return 1 / 6
    else:
        return 0

# PMF 출력
for x in range(1, 7):
    print(f&quot;P(X={x}) = {dice_pmf(x)}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 확률밀도함수(PDF)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연속 확률변수에 대해서는 확률밀도함수(PDF)를 사용합니다. PDF는 확률변수가 특정 구간 내에 속할 확률을 나타냅니다. PDF의 주요 특징은 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;f(x)는 항상 0 이상입니다.&lt;/li&gt;
&lt;li&gt;확률변수의 전체 범위에 대한 f(x)의 적분 값은 1입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 확률밀도함수 (PDF) 예제 및 코드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예제&lt;/b&gt;: 연속 확률변수의 예로는 키의 분포를 들 수 있습니다. 사람의 키는 연속적인 값을 가지므로, 이를 나타내기 위해 확률밀도함수를 사용할 수 있습니다. 예를 들어, 키가 170cm 이상 175cm 이하일 확률을 계산할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 코드는 정규분포를 사용하여 특정 범위 내 키의 확률을 계산합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;from scipy.stats import norm

# 정규분포의 PDF
mean = 170  # 평균
std_dev = 10  # 표준편차

# 170cm 이상 175cm 이하일 확률 계산
prob = norm(mean, std_dev).cdf(175) - norm(mean, std_dev).cdf(170)
print(f&quot;키가 170cm 이상 175cm 이하일 확률: {prob:.2f}&quot;)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Applied/DataScience</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1912</guid>
      <comments>https://programbasic.tistory.com/1912#entry1912comment</comments>
      <pubDate>Fri, 1 Mar 2024 16:34:40 +0900</pubDate>
    </item>
    <item>
      <title>2차원 좌표 차원축소 알고리즘</title>
      <link>https://programbasic.tistory.com/1911</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2차원 좌표를 하나의 숫자로 나타내는 방법에는 여러 가지가 있습니다. 이러한 변환은 주로 데이터 압축, 이미지 처리, 컴퓨터 그래픽스 등에서 사용됩니다. 대표적인 방법 몇 가지를 소개하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 일렬로 나열하기 (Linearization)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2차원 좌표를 일렬로 나열하는 방법은 &lt;b&gt;가장 간단하고 직관적인 방법&lt;/b&gt;입니다. 이 방법은 2차원 배열을 1차원 배열로 변환하는 데 자주 사용됩니다. 예를 들어, m&amp;times;n 크기의 행렬에서 (i,j) 좌표를 하나의 숫자로 표현할 수 있습니다. 일반적으로 이 숫자는 &lt;b&gt;i&amp;times;n+j&lt;/b&gt;로 계산됩니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def linearize_coordinates(x, y, width):
    &quot;&quot;&quot;
    2차원 좌표를 1차원으로 변환
    x, y: 2차원 좌표
    width: 행렬의 너비 (열의 수)
    &quot;&quot;&quot;
    return x * width + y

# 예시
x, y = 3, 4  # 2차원 좌표
width = 10   # 행렬의 너비
index = linearize_coordinates(x, y, width)
print(f&quot;2차원 좌표 ({x}, {y})는 1차원 인덱스로 {index}입니다.&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 힐버트 커브 (Hilbert Curve)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;힐버트 커브는 2차원 공간을 1차원으로 매핑하는 방법 중 하나입니다.&lt;br /&gt;이 방법은 공간의 연속성을 유지하면서 2차원 공간을 1차원 숫자로 변환할 수 있어, 이미지 압축이나 공간 데이터베이스에서 유용합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def hilbert_curve(x, y, order):
    &quot;&quot;&quot;
    힐버트 커브를 이용한 2차원 좌표의 1차원 변환
    x, y: 2차원 좌표
    order: 힐버트 커브의 차수
    &quot;&quot;&quot;
    n = 2 ** order
    idx = 0
    s = n // 2
    while s &amp;gt; 0:
        if x &amp;amp; s:
            idx += 1
        if y &amp;amp; s:
            idx += 2
        x, y = rotate(s, x, y)
        idx &amp;lt;&amp;lt;= 2
        s &amp;gt;&amp;gt;= 1
    return idx &amp;gt;&amp;gt; 2

def rotate(n, x, y):
    if y &amp;lt; n:
        if x &amp;lt; n:
            return y, x
        return x, y
    if x &amp;lt; n:
        return n - 1 - y, n - 1 - x
    return x, y

# 예시
x, y = 2, 3  # 2차원 좌표
order = 2     # 힐버트 커브의 차수
index = hilbert_curve(x, y, order)
print(f&quot;힐버트 커브에 의한 2차원 좌표 ({x}, {y})의 1차원 변환 값: {index}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. Z-순서 (Z-order)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Z-순서는 2차원 좌표를 바이너리로 변환한 후, 이 바이너리 숫자들을 교차시켜 하나의 숫자로 만드는 방법입니다.&lt;br /&gt;이 방법은 빠른 처리 속도를 가지며, 컴퓨터 그래픽스나 공간 데이터베이스에서 널리 사용됩니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def hilbert_curve(x, y, order):
    &quot;&quot;&quot;
    힐버트 커브를 이용한 2차원 좌표의 1차원 변환
    x, y: 2차원 좌표
    order: 힐버트 커브의 차수
    &quot;&quot;&quot;
    n = 2 ** order
    idx = 0
    s = n // 2
    while s &amp;gt; 0:
        if x &amp;amp; s:
            idx += 1
        if y &amp;amp; s:
            idx += 2
        x, y = rotate(s, x, y)
        idx &amp;lt;&amp;lt;= 2
        s &amp;gt;&amp;gt;= 1
    return idx &amp;gt;&amp;gt; 2

def rotate(n, x, y):
    if y &amp;lt; n:
        if x &amp;lt; n:
            return y, x
        return x, y
    if x &amp;lt; n:
        return n - 1 - y, n - 1 - x
    return x, y

# 예시
x, y = 2, 3  # 2차원 좌표
order = 2     # 힐버트 커브의 차수
index = hilbert_curve(x, y, order)
print(f&quot;힐버트 커브에 의한 2차원 좌표 ({x}, {y})의 1차원 변환 값: {index}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 칸토어 페어링 함수 (Cantor Pairing Function)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;칸토어 페어링 함수는 두 개의 자연수를 하나의 고유한 자연수로 매핑하는 방법입니다.&lt;br /&gt;이 방법은 수학적으로 정의된 함수를 사용하여 2차원 좌표를 하나의 숫자로 변환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 방법들은 모두 특정 상황에 따라 그 유용성이 달라질 수 있습니다. 각 방법은 2차원 데이터를 효율적으로 1차원으로 변환하는 데 목적이 있으며, 사용 용도에 따라 적합한 방법을 선택하는 것이 중요합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def cantor_pairing(x, y):
    &quot;&quot;&quot;
    칸토어 페어링 함수를 이용한 2차원 좌표의 변환
    x, y: 2차원 좌표
    &quot;&quot;&quot;
    return int(0.5 * (x + y) * (x + y + 1) + y)

# 예시
x, y = 3, 4
unique_number = cantor_pairing(x, y)
print(f&quot;칸토어 페어링 함수에 의해 2차원 좌표 ({x}, {y})는 고유한 숫자 {unique_number}로 변환됩니다.&quot;)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Applied/알고리즘</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1911</guid>
      <comments>https://programbasic.tistory.com/1911#entry1911comment</comments>
      <pubDate>Wed, 28 Feb 2024 16:23:05 +0900</pubDate>
    </item>
    <item>
      <title>확률 변수, 확률 분포에 대한 이해</title>
      <link>https://programbasic.tistory.com/1910</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 확률변수란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확률변수는 표본공간의 각 원소를 실수에 대응시키는 함수입니다. 이를 통해 우리는 실험의 결과를 수치적으로 표현할 수 있습니다. 예를 들어, 동전 던지기에서 '앞면'을 1, '뒷면'을 0으로 표현할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 확률변수의 실생활 예제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동전 던지기의 예를 들어 확률변수를 설명해보겠습니다. 동전을 던져서 앞면이 나오면 1, 뒷면이 나오면 0이라고 합시다. 이 경우 확률변수 X는 동전 던지기의 결과를 나타냅니다. X는 두 가지 값(0 또는 1)만 가질 수 있으므로 이산 확률변수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 확률분포의 이해&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확률분포는 확률변수와 그 확률변수가 취할 수 있는 값의 확률을 연결해줍니다. 확률분포는 확률변수의 성질에 따라 두 가지 유형으로 나뉩니다: 이산 확률분포와 연속 확률분포.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 확률분포의 실생활 예제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확률분포는 확률변수가 취할 수 있는 각각의 값에 대한 확률을 말합니다. 동전 던지기 예제에서 확률변수 X의 확률분포는 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;P(X=1) = 0.5 (앞면이 나올 확률)&lt;/li&gt;
&lt;li&gt;P(X=0) = 0.5 (뒷면이 나올 확률)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 파이썬 코드 예제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동전 던지기 확률변수의 확률분포를 시뮬레이션 하면 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드는 10,000번의 동전 던지기를 시뮬레이션하고, 앞면과 뒷면이 나올 확률을 계산합니다.&lt;br /&gt;이론적으로, 앞면과 뒷면이 나올 확률은 각각 0.5로 예상됩니다. 실제 시뮬레이션 결과도 이에 가깝게 나올 것입니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import random

# 동전 던지기 함수
def coin_flip():
    return random.choice([0, 1])  # 0은 뒷면, 1은 앞면

# 시뮬레이션
flips = 10000
results = [coin_flip() for _ in range(flips)]

# 확률 계산
heads_prob = results.count(1) / flips
tails_prob = results.count(0) / flips

print(f&quot;앞면이 나올 확률: {heads_prob}&quot;)
print(f&quot;뒷면이 나올 확률: {tails_prob}&quot;)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Applied/DataScience</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1910</guid>
      <comments>https://programbasic.tistory.com/1910#entry1910comment</comments>
      <pubDate>Tue, 27 Feb 2024 13:07:51 +0900</pubDate>
    </item>
    <item>
      <title>베이즈 정리 개념 및 코드</title>
      <link>https://programbasic.tistory.com/1909</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 베이즈 정리란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;베이즈 정리는 조건부 확률을 다룰 때 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 어떤 사건 A가 발생했다는 추가 정보가 주어졌을 때, 사건 B의 확률을 업데이트하는 데 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 조건부 확률은 다양한 분야에서 응용될 수 있습니다. 예를 들어 의학, 금융, 기계 학습 등에서 유용하게 쓰입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 베이즈 정리 수학적 정의&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;베이즈 정리는 다음과 같은 공식으로 표현됩니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;P(B) = P(A1 &amp;cap; B) + P(A2 &amp;cap; B) + P(A3 &amp;cap; B) = P(A1)P(B|A1) + P(A2)P(B|A2) + P(A3)P(B|A3)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 P(A)는 사건 A의 확률, P(B|A)는 A가 주어졌을 때 B의 조건부 확률을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;387&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caf7Zo/btsDKyqpeIr/v12OLd7mpP8hd7YpkrxdN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caf7Zo/btsDKyqpeIr/v12OLd7mpP8hd7YpkrxdN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caf7Zo/btsDKyqpeIr/v12OLd7mpP8hd7YpkrxdN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcaf7Zo%2FbtsDKyqpeIr%2Fv12OLd7mpP8hd7YpkrxdN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;387&quot; height=&quot;178&quot; data-origin-width=&quot;387&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 실생활 예제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의학 분야에서 베이즈 정리를 사용하는 예를 들어보겠습니다. 예를 들어, 특정 질병에 대한 양성 반응률이 99%인 검사가 있다고 가정해 봅시다. 그러나 이 질병이 전체 인구 중 0.1%만이 가지고 있는 희귀병이라고 합시다. 이때 어떤 사람이 이 검사에서 양성 반응이 나왔다면, 실제로 그 사람이 그 질병을 가지고 있을 확률은 얼마일까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 계산하기 위해 베이즈 정리를 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 코드 예제&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def bayes_theorem(P_A, P_B_given_A, P_notA_given_B):
    &quot;&quot;&quot;
    베이즈 정리 계산 함수
    P_A : 사건 A의 사전 확률
    P_B_given_A : 사건 A가 주어졌을 때 사건 B의 확률
    P_notA_given_B : 사건 B가 주어졌을 때 사건 A가 아닐 확률
    &quot;&quot;&quot;
    # 사건 B의 전체 확률 계산
    P_B = P_B_given_A * P_A + P_notA_given_B * (1 - P_A)
    # 사건 A가 주어졌을 때 사건 B의 사후 확률 계산
    P_A_given_B = (P_B_given_A * P_A) / P_B
    return P_A_given_B

# 예제 값
P_A = 0.001  # 질병을 가지고 있을 확률
P_B_given_A = 0.99  # 질병이 있을 때 양성 반응을 보일 확률
P_notA_given_B = 0.01  # 질병이 없을 때 양성 반응을 보일 확률

# 베이즈 정리 적용
result = bayes_theorem(P_A, P_B_given_A, P_notA_given_B)

print(f&quot;실제로 질병을 가지고 있을 확률: {result * 100:.2f}%&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드는 주어진 확률을 바탕으로 해당 사람이 실제로 질병을 가지고 있을 확률을 계산합니다.&lt;br /&gt;베이즈 정리는 이처럼 사전에 알려진 정보를 바탕으로 새로운 정보를 통합하고 업데이트하는 데 유용하게 사용됩니다.&lt;/p&gt;</description>
      <category>Applied/DataScience</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1909</guid>
      <comments>https://programbasic.tistory.com/1909#entry1909comment</comments>
      <pubDate>Sun, 18 Feb 2024 12:55:15 +0900</pubDate>
    </item>
    <item>
      <title>확률의 정의, 조건부 확률, 독립과 배반의 이해</title>
      <link>https://programbasic.tistory.com/1908</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;확률의 기본 정의&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확률&lt;/b&gt;: 일정 조건 아래 동일한 실험을 반복했을 때, 특정 사건이 발생할 상대적 빈도입니다. 확률은 0과 1 사이의 값을 가지며, 모든 가능한 사건의 확률의 합은 1입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;확률의 덧셈법칙&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;덧셈법칙&lt;/b&gt;: 두 사건 A와 B가 있을 때, A와 B 중 적어도 하나가 발생할 확률은 P(A) + P(B) - P(A &amp;cap; B)입니다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# P(A), P(B), P(A &amp;cap; B)를 예시 값으로 설정
P_A = 0.5  # 사건 A의 확률
P_B = 0.4  # 사건 B의 확률
P_A_and_B = 0.2  # 사건 A와 B가 동시에 발생할 확률

# 덧셈법칙 적용
P_A_or_B = P_A + P_B - P_A_and_B
print(&quot;P(A &amp;cup; B):&quot;, P_A_or_B)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;배반사건의 확률&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배반사건&lt;/b&gt;: 두 사건이 동시에 일어날 수 없는 경우를 의미합니다. 이 경우, P(A &amp;cap; B) = 0이 됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;조건부 확률&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;조건부 확률&lt;/b&gt;: 사건 A가 발생한 상황 하에서 사건 B가 발생할 확률입니다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# P(B | A)를 계산
P_B_given_A = P_A_and_B / P_A
print(&quot;P(B | A):&quot;, P_B_given_A)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;독립사건&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;독립사건&lt;/b&gt;: 두 사건 A와 B가 서로 영향을 주지 않는 경우, 이들은 독립사건입니다. 독립사건에서는 P(A &amp;cap; B) = P(A) * P(B)입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 독립사건인지 확인
independent = P_A_and_B == P_A * P_B
print(&quot;A와 B는 독립사건인가?:&quot;, independent)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Applied/DataScience</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1908</guid>
      <comments>https://programbasic.tistory.com/1908#entry1908comment</comments>
      <pubDate>Fri, 16 Feb 2024 01:35:50 +0900</pubDate>
    </item>
    <item>
      <title>확률실험과 사건의 기본 개념</title>
      <link>https://programbasic.tistory.com/1907</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;확률실험과 표본 공간&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확률실험(확률시행)은 관측 가능한 결과를 가져오는 임의의 실험 또는 시행을 의미합니다.&lt;br /&gt;표본 공간은 확률실험에서 가능한 모든 결과들의 집합입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표본 공간: &amp;Omega;(Sample space: S)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;확률실험으로부터 출현 가능한 모든 결과들의 모임&lt;/li&gt;
&lt;li&gt;ex: 동전 던지기 -&amp;gt; 앞면, 뒷면&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;표본 공간 예시&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 동전 두 번 던지기 실험의 표본 공간
sample_space = [&quot;HH&quot;, &quot;HT&quot;, &quot;TH&quot;, &quot;TT&quot;]
print(&quot;표본 공간:&quot;, sample_space)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;사건&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사건은 표본 공간의 부분집합으로, 특정 확률실험에서 관심 있는 결과들의 집합을 말합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사건: 기호 알파벳 대문자로 표기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사건 A, 사건 B&lt;/li&gt;
&lt;li&gt;표본 공간의 각 원소(출현 가능한 개별 결과)들의 부분집합&lt;/li&gt;
&lt;li&gt;&quot;사건이 발생했다&quot;: 시행 결과가 관심잇는 사건에 속하는 경우&lt;/li&gt;
&lt;li&gt;근원사건: 어떤 사건이 표본공간상의 하나의 원소로 구성된 사건&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 확률실험, 표본공간, 사건&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;E1: 동전을 2번 던져 나오는 면을 관찰
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;표본공간 : &amp;Omega; = {HH, HT, TH, TT}&lt;/li&gt;
&lt;li&gt;사건: 첫 번째 동전이 앞면이 나오는 사건 A1 = {HH, HT}&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;E2: 하루 중 인터넷 사용 관찰
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;표본 공간: &amp;Omega; = {0 &amp;lt;= t &amp;lt;= 24}&lt;/li&gt;
&lt;li&gt;사건 : 사용시간이 1시간이하인 사건 A2 = {0 &amp;lt;= t &amp;lt;= 1}&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;사건 예시&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 사건: 첫 번째 동전이 앞면인 경우
event_A1 = [outcome for outcome in sample_space if outcome[0] == &quot;H&quot;]
print(&quot;사건 A1:&quot;, event_A1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;사건의 연산&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사건의 연산에는 합사건, 곱사건, 여사건, 배반사건, 독립사건이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사건의 연산: 임의의 두 사건 A,B에 대해&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;합사건 (A &amp;cup; B)&lt;/b&gt;: 두 사건 중 적어도 하나가 발생하는 경우의 집합입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;곱사건 (A &amp;cap; B)&lt;/b&gt;: 두 사건이 동시에 발생하는 경우의 집합입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;여사건&lt;/b&gt;: 특정 사건이 발생하지 않는 경우의 집합입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;배반사건&lt;/b&gt;: 두 사건이 서로 겹치지 않는 경우입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;독립사건&lt;/b&gt;: 두 사건이 서로 영향을 주지 않는 경우입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 합사건: A1 &amp;cup; A2
event_A2 = [outcome for outcome in sample_space if outcome[1] == &quot;H&quot;]
union_event = set(event_A1).union(set(event_A2))
print(&quot;합사건:&quot;, union_event)

# 곱사건: A1 &amp;cap; A2
intersection_event = set(event_A1).intersection(set(event_A2))
print(&quot;곱사건:&quot;, intersection_event)

# 여사건
complement_event = set(sample_space).difference(set(event_A1))
print(&quot;여사건:&quot;, complement_event)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Applied/DataScience</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1907</guid>
      <comments>https://programbasic.tistory.com/1907#entry1907comment</comments>
      <pubDate>Tue, 13 Feb 2024 01:26:59 +0900</pubDate>
    </item>
    <item>
      <title>python 2차원 배열 깊은 복사 방법</title>
      <link>https://programbasic.tistory.com/1916</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;new_board = [row[:] for row in board]&lt;/code&gt; 구문은 Python에서 2차원 리스트(또는 배열) &lt;code&gt;board&lt;/code&gt;의 깊은 복사(deep copy)를 생성하는 방법 중 하나입니다. 이 방식을 사용하면, 원본 리스트 &lt;code&gt;board&lt;/code&gt;의 각 행을 새 리스트 &lt;code&gt;new_board&lt;/code&gt;로 복사하여, &lt;code&gt;board&lt;/code&gt;의 각 요소를 수정해도 &lt;code&gt;new_board&lt;/code&gt;에는 영향을 미치지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 예제를 통해 이 구문의 사용법을 설명해보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;예제: 2차원 리스트 깊은 복사&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원본 2차원 리스트 &lt;code&gt;board&lt;/code&gt;가 있고, 이를 깊은 복사하여 &lt;code&gt;new_board&lt;/code&gt;를 생성하고 싶다고 가정해보겠습니다. 그리고 &lt;code&gt;new_board&lt;/code&gt;의 일부 요소를 변경하여, 원본 &lt;code&gt;board&lt;/code&gt;에는 영향이 없음을 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1707725382055&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;원본 2차원 리스트
board = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;깊은 복사를 사용하여 새 리스트 생성&lt;/h4&gt;
&lt;pre id=&quot;code_1707725406742&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;new_board = [row[:] for row in board]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;새 리스트의 요소를 변경&lt;/h4&gt;
&lt;pre id=&quot;code_1707725412231&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;new_board[0][0] = 10&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;원본 리스트와 변경된 리스트 출력&lt;/h4&gt;
&lt;pre id=&quot;code_1707725419696&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(&quot;원본 리스트:&quot;)
for row in board:
print(row)

print(&quot;\n변경된 리스트:&quot;)
for row in new_board:
print(row)

이 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

원본 리스트:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

변경된 리스트:
[10, 2, 3]
[4, 5, 6]
[7, 8, 9]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예제에서 볼 수 있듯이, &lt;code&gt;new_board&lt;/code&gt;의 첫 번째 요소를 변경했을 때 원본 &lt;code&gt;board&lt;/code&gt;에는 아무런 변화가 없습니다. 이는 &lt;code&gt;new_board&lt;/code&gt;가 &lt;code&gt;board&lt;/code&gt;의 깊은 복사본이기 때문입니다. &lt;code&gt;row[:]&lt;/code&gt;는 리스트의 슬라이싱을 이용해 각 행을 전체 복사하는 방법으로, 이는 깊은 복사의 한 형태입니다.&lt;/p&gt;</description>
      <category>Basic/Python</category>
      <author>가누</author>
      <guid isPermaLink="true">https://programbasic.tistory.com/1916</guid>
      <comments>https://programbasic.tistory.com/1916#entry1916comment</comments>
      <pubDate>Mon, 12 Feb 2024 17:10:27 +0900</pubDate>
    </item>
  </channel>
</rss>