基本情報技術者 学習ページ|科目B・企業活動

データを加工して読む

データ分析では、集めた値をそのまま使うとは限りません。尺度をそろえる、一定区間を集計する、カテゴリを数値化するといった前処理を、配列処理として読めるようにします。

尺度をそろえる

値の範囲が大きく異なる特徴量を比較するときは、尺度をそろえる前処理を行うことがあります。最小値を0、最大値を1や100などに対応させる変換は、その一例です。

0から100へ変換するなら、元の値から最小値を引き、最大値と最小値の差で割って100倍します。最大値そのものではなく値の範囲で割る点を確認します。

最小最大による変換では最小値を引いて範囲で割る。

移動平均を求める

時系列データの短期的な変動をならして見る方法として、連続する一定個数の値の平均を順に求める移動平均があります。区間の長さが3なら、1~3番目、2~4番目というように集計範囲をずらします。

プログラムでは外側の繰返しで区間の開始位置を進め、内側の繰返しで区間内を合計します。区間の終端が配列を越えないようにします。

移動平均は同じ幅の区間をずらしながら平均する。

カテゴリを数値化する

カテゴリを表す値を、そのまま大小関係のある数値として扱うと、不適切な意味を持たせることがあります。One-Hot表現では、カテゴリごとに位置を用意し、該当する位置だけを1、ほかを0にします。

三種類のカテゴリのうち2番目なら、{0, 1, 0}のように表します。番号の大小を距離として扱わないための表現として考えます。

One-Hot表現は該当カテゴリだけを1にする。

集計と類似度を読む

クロス集計では、二つのカテゴリの組合せごとに件数を数えます。二次元配列を使う場合、片方のカテゴリを行、もう片方を列に対応させ、データを一件読むごとに該当要素を1増やせます。

数値ベクトルの類似性を見る方法には、向きの近さを使う考え方もあります。どのデータを比較し、何を似ていると定義しているかを式や処理から確認します。

データの行列化では行と列が何を表すかを確認する。

業務を数理で考える

ORやIEでは、在庫、日程、作業時間、資源配分などの業務を数値として捉え、よりよい選択を考えます。例えば在庫管理では、発注する時期や量を需要と在庫量から判断します。

日程計画では、各作業の所要時間と前後関係から全体の期間に影響する経路を調べます。最適化の問題では、何を最小化・最大化したいのかと制約条件を分けることが出発点です。

最適化では目的と制約を分けて業務を数理的に捉える。

本番の形で解いてみる

科目Bの形: プログラム(擬似言語)を読んで解答群から選ぶ(このページのために作った問題)

次のプログラム中の【a】、【b】に入れる正しい答えの組合せを、解答群の中から選べ。配列aには異なる値が二つ以上含まれる。関数normalizeは、最小値を0、最大値を100とする整数値へ各要素を変換した配列を返す。

 1○整数型の配列: normalize(整数型の配列: a)
 2  整数型: min ← a[1]
 3  整数型: max ← a[1]
 4  整数型: i, v
 5  整数型の配列: result ← {}
 6  for (i を 2 から aの要素数 まで 1 ずつ増やす)
 7    if (a[i] < min)
 8      min ← a[i]
 9    endif
10    if (a[i] > max)
11      max ← a[i]
12    endif
13  endfor
14  for (i を 1 から aの要素数 まで 1 ずつ増やす)
15    a
16    b
17  endfor
18  return result
  1. a: v ← ((a[i] - min) × 100) ÷ (max - min) の商 b: resultの末尾に v の値を追加する
  2. a: v ← (a[i] × 100) ÷ max の商 b: resultの末尾に v の値を追加する
  3. a: v ← ((a[i] - min) × 100) ÷ max の商 b: resultの末尾に v の値を追加する
  4. a: v ← ((max - a[i]) × 100) ÷ (max - min) の商 b: resultの末尾に v の値を追加する
  5. a: v ← ((a[i] - min) × 100) ÷ (max - min) の商 b: resultの末尾に a[i] の値を追加する
答えと解説を見る

正解: a: v ← ((a[i] - min) × 100) ÷ (max - min) の商 b: resultの末尾に v の値を追加する

元の値から最小値を引くと、最小値が0に対応します。それを最大値と最小値の差で割り、100倍することで最大値が100に対応します。

まちがえやすい点: 最大値だけで割ると、最小値が0以外の場合に0から100の尺度へ正しく変換できない。

科目Bの形: プログラム(擬似言語)を読んで解答群から選ぶ(このページのために作った問題)

次のプログラム中の【a】、【b】に入れる正しい答えの組合せを、解答群の中から選べ。cは1以上k以下の整数である。関数oneHotは、c番目だけが1で、それ以外が0の要素数kの配列を返す。

 1○整数型の配列: oneHot(整数型: c, 整数型: k)
 2  整数型の配列: result ← {}
 3  整数型: i
 4  for (i を 1 から k まで 1 ずつ増やす)
 5    if (a)
 6      resultの末尾に b の値を追加する
 7    else
 8      resultの末尾に 0 の値を追加する
 9    endif
10  endfor
11  return result
  1. a: i = c b: 1
  2. a: i ≠ c b: 1
  3. a: i ≦ c b: 1
  4. a: i = c b: c
  5. a: i > c b: 1
答えと解説を見る

正解: a: i = c b: 1

One-Hot表現では、カテゴリcに対応する位置だけを1にします。したがって、現在の位置iがcと等しい場合だけ1を追加します。

まちがえやすい点: カテゴリ番号cそのものを配列へ入れるのではなく、該当位置に1を入れる。

科目Bの形: プログラム(擬似言語)を読んで解答群から選ぶ(このページのために作った問題)

次のプログラムを実行したとき、出力される値の並びとして正しいものを解答群の中から選べ。このプログラムは、連続する3要素の平均を先頭から順に出力する。

 1整数型の配列: data ← {6, 9, 12, 15, 18}
 2整数型: i, j, sum
 3for (i を 1 から 3 まで 1 ずつ増やす)
 4  sum ← 0
 5  for (j を i から i + 2 まで 1 ずつ増やす)
 6    sum ← sum + data[j]
 7  endfor
 8  sum ÷ 3 の商 を出力する
 9endfor
  1. 9, 12, 15
  2. 6, 9, 12
  3. 12, 15, 18
  4. 9, 13, 15
  5. 27, 36, 45
答えと解説を見る

正解: 9, 12, 15

最初は6、9、12の平均で9、次は9、12、15の平均で12です。最後は12、15、18の平均なので15となります。

まちがえやすい点: 次の区間では3要素すべてを入れ替えるのではなく、開始位置を一つだけ進める。

基本情報の学習ページ

ほかの学習ページの一覧と、2択の用語カード(750語)は、基本情報技術者のページにあります。

基本情報技術者のページへ →

このページの内容は、IPA「基本情報技術者試験 シラバス Ver.9.2」(2026年1月公表)と試験要綱Ver.5.6の範囲にもとづきます(2026年10月確認)。IPAは2027年度春ごろから新しい試験制度に移る予定です。